Azure マネージドID の第一歩

インフラ屋としては認証に詳しくなりたい。Azure にはマネージドID という素晴らしい認証の機能がある。
一個ずつ試していきましょう。
## 概要
概要といいつつ、マネージドID そのものの解説はたくさん見つかると思うので省略します。
親愛なるやまぱんさんの記事がわかりやすく、しかも他の記事もついているので何回も読んでます。
https://qiita.com/aktsmm/items/1a1d8b79f18f0c7a5331

今回やることは、Azure Powershell を使ってマネージドID の権限でリソースグループの作成です。
1. 仮想マシンの作成
1. マネージドID 付与
1. 権限をマネージドID に付与
1. 仮想マシンに入ってPowershell からAzure Powershell コマンドでマネージドID 認証
1. リソースグループ作成

## 作業
### リソースの作成
適当にVNet, 仮想マシンを作ります。パブリックIP で直接接続のパターンでやってます。
仮想マシンですが、Windows Server 2022 で作りました。
仮想マシンの作成時にマネージドID を付けることもできますが、ここではつけません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/2b9d00eb-f201-e20d-1bfd-d55addf3aee5.png)

### Azure Powershell のインストール
仮想マシンにRDP し、Azure Powershell をインストールします。
https://learn.microsoft.com/ja-jp/powershell/azure/install-azps-windows?view=azps-12.5.0&tabs=powershell&pivots=windows-psgallery
Windows Server 2022 で仮想マシンを作った時点では、CurrentUser がRemoteSigned になっていないので、そこから従います。

```
> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
> Install-Module -Name Az -Repository PSGallery -Force
```
1分でインストール完了しました。

### マネージドID で認証
マネージドID がついていれば、Azure が内部でよしなにしてくれることで認証が完了します。認証するコマンドはこれです。-Identity オプションがなければ認証を促す画面が出てきます。
```
> Connect-AzAccount -Identity
```
まだマネージドID を有効化していないため、エラーが出ます。
```
PS C:\Users\testuser> Connect-Azaccount -Identity
WARNING: Unable to acquire token for tenant 'organizations' with error 'ManagedIdentityCredential authentication
unavailable. The requested identity has not been assigned to this resource.
Status: 400 (Bad Request)

```

マネージドID を有効にします。
仮想マシン > セキュリティ > ID で次の画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/8d7355e8-0abf-b8e3-1e43-8955532f0359.png)

オンにして保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/91acb1a4-9351-c6d5-c343-2a32d39e00ba.png)

数十秒でマネージドID が作成されました。オブジェクトID が出てますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/ccb2b5d6-34ab-d6c9-9a06-8cc9ab2e5a5d.png)

オブジェクトID と言えばEntra ID です。
探してみましょう。
Azure portal の検索窓でEntra ID で検索して、ディレクトリ内でさっき出たオブジェクトID を検索してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/35df6ae3-1b27-9a2c-c8be-8faf68a28556.png)

すると仮想マシンが「エンタープライズ　アプリケーション」として見えます。今回はこの深掘りはしません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/a8e69f03-4583-b4f7-debb-5f13461c1dcf.png)

### マネージドID 利用
仮想マシンに戻って、マネージドID で認証するコマンドを打ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/7cf209fa-0e69-2db2-9e4b-c9b10cc9c591.png)

認証に成功し、テナントID が表示されます。当然ながら、現時点ではSubscription に何も権限を与えていないので表示されません。

ポータルに戻って、マネージドID に権限を与えます。
ここから、サブスクリプションスコープで共同作成者ロールを付与しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/b18a9045-93d6-9df6-7c28-77faeb9f7c85.png)

そして仮想マシンで再度入りなおすと次の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/aa4bbb5b-4c62-091d-3311-43d9efebc395.png)

これでAzure Powershell でAzure のリソースを操作する準備が整いました。
### リソースグループ作成
リソースグループの作成コマンドを打ちます。
```
> New-AzResourceGroup -Name exampleGroup -Location japaneast
```


リソースグループを作成できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/fa087433-73b3-af90-553b-e07014062290.png)

この通り、ポータルからも"exampleGroup" が確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617557/cd0d6e2b-a6a0-e9d8-dca7-a44ce951447d.png)

お疲れさまでした。