概要
Azure環境の情報をスクリプトから扱えるようにするために、Service Principal (サービス プリンシパル)の登録と確認までの一連の流れを扱います。
注記
本記事ではスクリプトからAzure環境の情報を扱う過程で、認証に使用されるSeretの情報を入手します。Secretの取り扱いには注意を払ってください。
App registrations の設定
Azure Active Directory
のManage
セクションよりApp registrations
を開き、New Registration
ボタンを押下します。Register an application
画面では下記のように設定します。設定項目 設定値 備考 Name app-sp-test 任意の名称を指定します。 Supported account types Accounts in this organizational directory only Manage
セクションのCertificates & secret
を開き、Client secrets
タブよりNew client secret
ボタンを押下します。Secret を発行するための情報を、下記のように設定して
Add
ボタンを押下します。設定項目 設定値 備考 Description MySecret 適宜、説明を入力します。 Expires 3 months 筆者は検証環境のため、早めに期限が切れるように設定しています。 Value の値をコピーして情報を控え、厳重に管理を行います。
画面を更新してしまうと Value の情報がマスクされるため、コピーできなかった場合は再作成します。先ほど作成したService Principalの
Overview
画面より、スクリプトからの接続に必要となる下記の情報を控えます。- Application (client) ID
- Directory (tenant) ID
Role の設定
アプリケーションからのアクセス対象となるResource GroupへService Principalに対するRoleを割り当てていきます。
Resource Group のさらに上位に位置する Subscription で設定もできますが、悪用された場合の影響範囲を限定するために本記事ではResource Groupを対象としています。対象Resource Groupの
Access control (IAM)
を開き、Add
ボタンからAdd role assignment
を押下します。Role
タブでは、アプリケーションに必要な権限を保持しているRoleを指定します。
本記事では読み取りの操作しか行わないため、Reader
を指定しています。
Member
タブでは下記のように設定します。設定項目 設定値 備考 Assign access to User, group, or service principal Members app-sp-test App registrations
で設定した名称を指定します。Review + assign
タブでは、指定内容に誤りがないか確認してください。
Azure Powershell からの確認
Azure Powershell から下記のコマンドの変数部分を書き換えて実行します。
コマンドの内容はResource Group情報の取得を行うのみです。$SP_APPID = "Application (client) ID の値を入力します。" $SP_SECRET = "Secret の値を入力します。" $TENANT_ID = "Directory (tenant) ID の値を入力します。" $Password = ConvertTo-SecureString $SP_SECRET -AsPlainText -Force $Credential = New-Object System.Management.Automation.PSCredential ($SP_APPID, $Password) Connect-AzAccount -ServicePrincipal -Credential $Credential -Tenant $TENANT_ID Get-AzResourceGroup
変数に指定する情報を下記の表にも整理したので参考にしてください。
変数 指定する値の説明 $SP_APPID Application (client) ID の値を入力します。 $SP_SECRET Secret の値を入力します。 $TENANT_ID Directory (tenant) ID の値を入力します。 下記のように Azure Cloud Shell から Powershell を選択して実行すると、Azure Portal内の操作で完結します。
画像のようにResource Groupの情報が取得していれば、期待通りの動作となります。
一時的な検証の場合は Secret を適宜削除
少しでも悪用される可能性を減らすために、一時的な検証の場合はService PrincipalのSecretは削除しておきます。
Azure Active Directory
のManage
セクションよりApp registrations
を開き、対象のService Principalを選択して設定画面を開きます。
Manage
セクションのCertificates & secret
を開き、Client secrets
タブよりSecretを削除します。
適宜、確認のためのコマンドを再実行して認証が通らなくなっているのを確認します。