LoginSignup
1
5

More than 3 years have passed since last update.

Azure ADでSAML認証してAWSCLIを実行する方法

Posted at

概要

  • セキュリティポリシーでIAM Userの作成/使用が原則禁止されている現場ってありますよね?
  • AWSのAPIKey流出事故は何度も見聞きしているので、IAMUser作成を禁止するのは理解できます。
  • IAMUserを使わずにログインする方法の一つとして、AzureAD経由でSAML認証する方法があります。
  • AzureAD側でMFAログインを必須化することもできて、とてもセキュアな設計なのですが、AWS CLIを使うのにひと手間かかります。
  • 今回はその手間を省くツールaws-azure-loginを見つけたので、使い方をメモしておきます。

インストール方法

$ npm install -g aws-azure-login
  • インストールは簡単ですね。

初期設定の手順

$ aws-azure-login --configure --profile <profile_name>
  • READMEに書いてある通り設定していきます。
Configuring profile '<profile_name>'
? Azure Tenant ID:
  1. いきなりつまずきます。 Azure Tenant ID とはなんぞや?
  2. トラブルシューティングのためにブラウザで SAML レスポンスを表示する方法を参考にSAMLレスポンスを抜き出してみました。

  3. レスポンスの中にそれらしき値を発見
    <Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid"><AttributeValue>xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx</AttributeValue>

  4. ↑のAttributeValueを入力します。

? Azure App ID URI:
  1. 今度は Azure App ID URI を聞かれます。Azure側のなにかのURLかと思いましたが、MSが提供しているドキュメントによると、https://signin.aws.amazon.com/saml を設定すべしと書いてあります。なんだAWSのサインインURLのことだったのですね。ということで↑のURLを入力します。
? Default Username:
  1. AzureADにログインするユーザ名を入力します。
? Default Role ARN (if multiple):
  1. Role ARNを聞かれます。SAML認証用のIAMRoleのARNを入力します。例: arn:aws:sts::<account_id>:assumed-role/<role_name>
? Default Session Duration Hours (up to 12): (1)
  1. セッションの有効期間を聞かれますので、入力します。

ログイン手順

$ aws-azure-login --profile <profile_name>
  • PassWord, MFA-token等を聞かれるので、よしなに入力してください。
  • 先の手順でUserName等にはデフォルト値が登録されていると思います。

AWSCLI実行

$ aws s3 ls --profile <profile_name>
  • これでAWSCLIを実行できるはずです:tada:

参考資料

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5