1. ホーム
  2. azure

[解決済み] Azure Service Principalとは何ですか?

2022-03-08 02:07:27

質問

私の要求は単純です。非インタラクティブモードでシェルスクリプトからAzureにログインしたいのですが、 "az login -u username -p password" コマンドは以下のエラーを出します。

Get Token request returned http error: 400 and server response: {"error":"invalid_grant","error_description":"AADSTS70002: Error validating credentials. : SAML token is invalid. : The element with ID 'xxxxxx' was either unsigned or the signature was invalid.

あるサイトで、サービスプリンシパルを作成するように言われました。そこで質問ですが、サービスプリンシパルとは何でしょうか?また、サービスプリンシパルを作成して、シェルスクリプトからコマンド(アプリゲートウェイなどのさまざまなリソースを作成する)を実行するにはどうすればよいのでしょうか?

解決方法は?

こちらをご参照ください。 公式文書 .

Azureサービスプリンシパルは、ユーザーが作成した アプリ、サービス、自動化ツールが特定のAzureにアクセスするために リソースがあります。これは、「ユーザーID」(ログインとパスワード、または 証明書)、特定のロール、および厳密に制御されたパーミッションがあります。 リソースにアクセスすることができます。特定のことができればいいのです。 一般的なユーザーIDとは異なります。次のような場合、セキュリティが向上します。 を実行するために必要な最小限の権限レベルのみを付与します。 管理タスクを実行します。

Azure CLi 2.0で新しいサービスプリンシパル(sp)を作成したい場合。Azure ADユーザーでログインします。そして、以下のコマンドを実行します。

az ad sp create-for-rbac --name {appId} --password "{strong password}"

結果は以下のようになります。

{
  "appId": "a487e0c1-82af-47d9-9a0b-af184eb87646d",
  "displayName": "MyDemoWebApp",
  "name": "http://MyDemoWebApp",
  "password": {strong password},
  "tenant": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}

appId はログインユーザーです。 password はログインパスワードです。

spを作成した後、そのspに Contributor ロールを使用することで、Azureリソースを管理することができます。

az role assignment create --assignee <objectID> --role Contributor

これで、以下のコマンドを実行すれば、非インタラクティブモードでログインできるようになりました。

az login --service-principal -u <appid> --password {password-or-path-to-cert} --tenant {tenant}