ローカル開発環境で Azure SDK for Python を利用するための認証設定

Azure SDK for Python を利用するためにサービス プリンシパルを利用する手順を解説します。

## Azure にアプリケーションを登録する

👇**Microsoft Entra ID** を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/7842d43b-2fb1-b6f6-d4ad-a05bbfba9712.png)

👇**アプリの登録**ー**新規登録**を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/62b12f5c-9683-7415-1a35-05309b3da086.png)

👇適当な名前を入力し**登録**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/736e1788-34b7-bf10-357c-aade727b9d62.png)

👇**アプリケーション (クライアント) ID**と**ディレクトリ (テナント) ID**をコピーし、**証明書とシークレット**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/6c3e423e-33d2-4b03-56c9-6203857d33dc.png)

👇**新しいクライアントシークレット**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/8cb80ea2-75b5-6f19-87fd-56eb7828d8c4.png)

👇**説明**と**有効期限**を指定して**追加**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/d93cefca-3911-0e3a-80cd-4a9dad8f4839.png)

👇**クライアントシークレットの値**をコピーします。  
※ クライアントシークレットIDの方では無いので注意して下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/70067da4-d58f-6d6f-a65f-2ad133e6592b.png)

## ローカル開発用の Azure AD セキュリティ グループを作成する

👇**Microsoft Entra ID** を開きます。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/7842d43b-2fb1-b6f6-d4ad-a05bbfba9712.png)

👇**グループ**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/b30b4391-ca94-f4cb-95ce-070548f8b86d.png)

👇**新しいグループ**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/0d107b49-9096-5797-cb43-badd7e7e5581.png)

👇**グループ名**を入力し**作成**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/9e1e304f-ef57-4fd0-3ffa-458f44da4280.png)

👇作成したグループを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/3d935fde-63fa-7bd7-92f9-d6d560de3ff3.png)

👇メンバーを選択しメンバーの追加をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/25cb7d96-3f63-7cdb-b95f-df854a150d00.png)

👇上記で作成した**アプリケーション名**をチェックし、**選択**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/56230408-e66a-93df-66a7-983dc715681b.png)

👇グループのメンバーにアプリが登録されました。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/51637e77-f8d6-cfff-1fac-6b71499c5456.png)

## アプリケーションにロールを割り当てる

※ 下記説明では**特権管理者ロール**を割り当てますが、手っ取り早く説明するためですので、実運用の際には適切な範囲の権限付与にして下さい。  

**resource_group_for_python**というリソースグループが作成してあるとします。  
リソースグループの作成は[**こちら参考**](https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/management/manage-resource-groups-portal#create-resource-groups)にして下さい。  

👇**アクセス制御（IAM）**から**追加**ー**ロールの割り当ての追加**を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/01d4d318-da9a-5975-320d-791cb0971370.png)

👇**特権管理者ロール**ー**所有者**を指定し、**次へ**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/a6113e60-d010-87fb-c927-8072fa8fc588.png)

👇**メンバーを選択する**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/f0358691-f1a9-7435-47dd-70fbc9d4bb1e.png)

👇上記で作成したグループを選択し、**選択**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/8bde5cb6-bfed-c01c-f28f-eb330e0f4e7a.png)

👇次へ  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/cdd231a9-b23a-7c2a-5c47-4cc0f0c9e27d.png)

👇**制約なし**を指定し、**レビューと割り当て**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/d562856b-744a-638c-e616-0e7eafa2ffe5.png)

👇**レビューと割り当て**をクリックします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/072abc7c-6325-c3c4-4fb2-e1c72d3be684.png)

## ローカル開発の環境変数を設定する

環境変数を設定します。  

- AZURE_CLIENT_ID:上記で取得した**アプリケーション (クライアント) ID**
- AZURE_TENANT_ID:上記で取得した**ディレクトリ (テナント) ID**
- AZURE_CLIENT_SECRET:上記で取得した**クライアントシークレット**

👇例  

```text
AZURE_CLIENT_ID=00000000-0000-0000-0000-000000000000
AZURE_TENANT_ID=11111111-1111-1111-1111-111111111111
AZURE_CLIENT_SECRET=abcdefghijklmnopqrstuvwxyz
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708851/cefc6a75-6fcf-de30-ab6d-9c39956c3efd.png)

## 👇関連記事

- [ローカル開発環境で Azure SDK for Python を利用する](https://docusaurus.plant11.com/python/azure_sdk_python)

## 👇参考URL

- [サービス プリンシパルを使用したローカル開発時に Azure サービスに対して Python アプリを認証する](https://learn.microsoft.com/ja-jp/azure/developer/python/sdk/authentication-local-development-service-principal?tabs=azure-portal)

[keywords]  
Azure SDK python 認証

[ローカル開発環境でAzure SDK for Pythonを利用するための認証設定](https://docusaurus.plant11.com/cloud/azure_sdk_python_certificate)

更新日:2023/11/07