概要
- セキュリティポリシーで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:
-
いきなりつまずきます。
Azure Tenant ID
とはなんぞや? -
トラブルシューティングのためにブラウザで SAML レスポンスを表示する方法を参考にSAMLレスポンスを抜き出してみました。
-
レスポンスの中にそれらしき値を発見
<Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid"><AttributeValue>xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx</AttributeValue>
-
↑のAttributeValueを入力します。
? Azure App ID URI:
- 今度は
Azure App ID URI
を聞かれます。Azure側のなにかのURLかと思いましたが、MSが提供しているドキュメントによると、https://signin.aws.amazon.com/saml
を設定すべしと書いてあります。なんだAWSのサインインURLのことだったのですね。ということで↑のURLを入力します。
? Default Username:
- AzureADにログインするユーザ名を入力します。
? Default Role ARN (if multiple):
- Role ARNを聞かれます。SAML認証用のIAMRoleのARNを入力します。例:
arn:aws:sts::<account_id>:assumed-role/<role_name>
? Default Session Duration Hours (up to 12): (1)
- セッションの有効期間を聞かれますので、入力します。
ログイン手順
$ aws-azure-login --profile <profile_name>
- PassWord, MFA-token等を聞かれるので、よしなに入力してください。
- 先の手順でUserName等にはデフォルト値が登録されていると思います。
AWSCLI実行
$ aws s3 ls --profile <profile_name>
- これでAWSCLIを実行できるはずです