Azure サービスプリンシパル認証の使用
Azure サービスプリンシパルとしての認証は、OAuth クライアントクレデンシャルフローを介して処理され、直接のユーザー認証は行われません。 代わりに、クレデンシャルはアプリ自体のためだけに作成されます。アプリで実行されるすべてのタスクは、デフォルトユーザーコンテキストなしで実行されます。 リソースへのアプリケーションのアクセスは、割り当てられたロールの権限によって制御されます。
Azure サービスプリンシパル認証
Azure サービスプリンシパルを使用して認証する場合、Azure AD テナントにアプリケーションを登録する必要があります。 以下の手順に従って、ロールベースのアクセス制御で使用できる新しいAzure Active Directory(Azure AD)アプリケーションおよびサービスプリンシパルを作成します。Azure AD へのアプリ登録およびサービスプリンシパルの作成
次の手順に従います:- https://portal.azure.com にログインします。
- 左側のナビゲーションペインで[Azure Active Directory]を選択し、[アプリの登録]を選択します。
- [新規登録] をクリックします。
- アプリ名を入力し、ラジオボタンから[任意のAzure AD ディレクトリ - マルチテナント]を選択します。そして、リダイレクトURL をhttp://localhost:33333 のようなドライバーのデフォルトに設定します。
- アプリ作成後に、[概要]セクションに表示されているアプリケーション(クライアント)Id の値をコピーします。この値はOAuthClientId として使用されます。
- [証明書とシークレット]セクションに移動して、アプリの認証タイプを定義します。認証には、クライアントシークレットを使用する方法と、証明書を使用する方法の2種類があります。
推奨されている認証方法は証明書を使用する方法ですが、アプリケーションシークレットを作成することも可能です。
- オプション1:証明書をアップロードする。[証明書とシークレット]セクションで[証明書のアップロード]を選択し、ローカルマシンからアップロードする証明書を選択します。
- オプション2:新しいアプリケーションシークレットを作成する。[証明書とシークレット]セクションで[新しいクライアントシークレット]を選択し、有効期限を指定します。クライアントシークレットを保存すると、キーの値が表示されます。表示は一度のみなので値をコピーします。これはOAuthClientSecret として使用されます。
- [認証]タブで、必ず[アクセストークン(暗黙的なフローに使用)]オプションを選択してください。
アプリケーションへのロールの割り当て
サブスクリプションのリソースにアクセスするには、アプリケーションにロールを割り当てる必要があります。- 検索バーでサブスクリプションサービスを検索・選択して、[サブスクリプション]ページを開きます。
- アプリケーションを割り当てる特定のサブスクリプションを選択します。
- [アクセス制御 (IAM)]を開き、[追加]->[ロール割り当ての追加]を選択して[ロール割り当ての追加]ページを開きます。
- 作成したAzure AD アプリに割り当てるロールとして、[所有者]を選択します。
Azure サービスプリンシパルを使用した認証
設定されたアプリ認証(クライアントシークレットまたは証明書)に応じて、以下のいずれかの接続プロパティグループを設定すると、接続できるようになります。両メソッド共通
クライアントシークレットか証明書認証を選択する前に、まず以下の手順に従って設定を行います。その後、該当するセクションの設定に進んでください。
- AuthScheme:アプリ設定のAzureServicePrincipal に設定。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使えば、繰り返しOAuth の交換を行ったり、手動でOAuthAccessToken を設定する必要はなくなります。
- AzureTenant:接続するテナントに設定。
- OAuthClientId:アプリ設定のクライアントID に設定。
続いて、以下を設定します。
- OAuthClientId:アプリ設定のクライアントID に設定。
- OAuthClientSecret:アプリ設定のクライアントシークレットに設定。
証明書を使用した認証
続いて、以下を設定します。
- OAuthJWTCert:JWT 証明書ストアを設定。
- OAuthJWTCertType:OAuthJWTCert で指定された証明書ストアの種類に設定。