#author("2020-09-16T05:49:30+00:00","","") #mynavi(Azureメモ) #setlinebreak(on); * 概要 [#gb9ab00c] #html(<div class="pl10">) Azure のサービスプリンシパルを作成後、それを使用してログインする手順を記載する。 #html(</div>) * 目次 [#kc48b057] #contents - 関連 -- [[Azureメモ]] -- [[Azure CLI の操作]] * パスワードベースのサービスプリンシパルの作成 [#m92c293d] #html(<div class="pl10">) サービスプリンシパル作成 #myterm2(){{ az ad sp create-for-rbac --name サービスプリンシパル名 { "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "サービスプリンシパル名", "name": "http://サービスプリンシパル名", "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } }} ログイン確認 #myterm2(){{ az login --service-principal -u 表示されたname -p 表示されたpassword --tenant 表示されたtenant }} #html(</div>) * 証明書ベースのサービスプリンシパル作成 [#fe799b1e] #html(<div class="pl10">) 証明書の作成(パスワードなしで作成) #myterm2(){{ openssl req \ -newkey rsa:4096 -nodes -sha256 -keyout my_cert.key \ -x509 -days 365 -out my_cert.crt }} # 秘密キーと証明書を1ファイルに纏める #myterm2(){{ cat my_cert.key >my_cert.pem cat my_cert.crt >>my_cert.pem rm -rf my_cert.key && rm -rf my_cert.crt }} サービスプリンシパル作成 #myterm2(){{ az ad sp create-for-rbac --name サービスプリンシパル名 --cert @`pwd`/my_cert.pem { "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "サービスプリンシパル名", "name": "http://サービスプリンシパル名", "password": null, "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } }} ログイン確認 #myterm2(){{ az login --service-principal -u 表示されたname -p ./my_cert.pem --tenant 表示されたtenant }} #html(</div>) * ロールの管理 [#daefe4fd] #html(<div class="pl10">) サービス プリンシパルの既定のロールは共同作成者になっているので、必要なロールのみを割り当て直しておく必要がある。 参考 - [[サービス プリンシパル ロールを管理する>https://docs.microsoft.com/ja-jp/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest#manage-service-principal-roles]] - [[Azure 組み込みロール>https://docs.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles]] 例) 閲覧者ロールを追加し、共同作成者ロールを削除 #myterm2(){{ az role assignment create --assignee APP_ID --role Reader az role assignment delete --assignee APP_ID --role Contributor }} // az role assignment create --assignee APP_ID --role "AcrPush" // az role assignment create --assignee APP_ID --role "Website Contributor" ** カスタムロールの作成 [#j91f5cf2] #html(<div class="pl10">) #TODO https://docs.microsoft.com/ja-jp/azure/role-based-access-control/resource-provider-operations https://docs.microsoft.com/ja-jp/azure/role-based-access-control/resource-provider-operations#microsoftweb [[チュートリアル:Azure CLI を使用して Azure カスタム ロールを作成する>https://docs.microsoft.com/ja-jp/azure/role-based-access-control/tutorial-custom-role-cli]] [[Azure ロールの定義について>https://docs.microsoft.com/ja-jp/azure/role-based-access-control/role-definitions]] [[Azure カスタム ロール>https://docs.microsoft.com/ja-jp/azure/role-based-access-control/custom-roles]] | ロール | 説明 |h | Microsoft.Web/sites/Write | 新しい Web アプリを作成するか、既存の Web アプリを更新します。 | | Microsoft.Web/sites/Write | 新しい Web アプリを作成するか、既存の Web アプリを更新します。 | | Microsoft.Web/sites/restart/Action | Web アプリを再起動します。| | Microsoft.Web/sites/start/Action | Web アプリを起動します。| | Microsoft.Web/sites/stop/Action | Web アプリを停止します。| | microsoft.web/sites/functions/action | Web アプリの関数。| | microsoft.web/sites/sync/action | Web アプリを同期します。| | microsoft.web/sites/syncfunctiontriggers/action | 関数トリガーを同期します。| | Microsoft.Web/sites/eventGridFilters/delete | Web アプリから Event Grid フィルターを削除します。| | Microsoft.Web/sites/eventGridFilters/read | Web アプリから Event Grid フィルターを取得します。| | Microsoft.Web/sites/eventGridFilters/write | Web アプリに Event Grid フィルターを配置します。| | microsoft.web/sites/host/sync/action | 関数トリガーを同期します。| | Microsoft.ContainerRegistry/registries/importImage/action | 指定されたパラメーターを使用して、コンテナー レジストリにイメージをインポートします。| | Microsoft.ContainerRegistry/registries/builds/write | 指定したパラメーターでコンテナー レジストリのビルドを更新します。| | Microsoft.ContainerRegistry/registries/buildTasks/write | 指定したパラメーターでコンテナー レジストリのビルド タスクを作成または更新します。| | Microsoft.ContainerRegistry/registries/metadata/read | コンテナー レジストリの特定のリポジトリのメタデータを取得します| | Microsoft.ContainerRegistry/registries/pull/read | コンテナー レジストリからイメージをプルまたは取得します。| | Microsoft.ContainerRegistry/registries/push/write | コンテナー レジストリにイメージをプッシュするか書き込みます。| Microsoft.ContainerRegistry/registries/listBuildSourceUploadUrl/action コンテナー レジストリのソース アップロード URL の場所を取得します。 Microsoft.ContainerRegistry/registries/scheduleRun/action コンテナー レジストリに対する実行をスケジュールします。 Microsoft.ContainerRegistry/registries/runs/listLogSasUrl/action 実行のログ SAS URL を取得します。 #html(</div>) #html(</div>)