Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
AWS CLI を使用して AssumeRole 呼び出しを行い、一時的なユーザー認証情報を保存する方法を教えてください。
AWS コマンドラインインターフェイス (AWS CLI) を使用して、AssumeRoleWithSAML、AssumeRole、および AssumeRoleWithWebIdentity オペレーションから認証情報を取得したいと考えています。
解決方法
AssumeRoleWithSAML、AssumeRole、AssumeRoleWithWebIdentity から認証情報を取得するには、次の手順を実行して API を呼び出し、出力をテキストファイルに保存します。次に、その出力を使用して AWS CLI で API コマンドを呼び出します。
重要:
- AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
- role-arn および role-session-name のパラメータは必須です。
AssumeRoleWithSAML
注意: ID プロバイダーからの有効な SAML 2.0 レスポンスと、IdP を信頼する IAM ロールが必要です。
デベロッパーツールから SAML レスポンスを取得します。
1. 「トラブルシューティングのためにブラウザで SAML レスポンスを表示する方法」の手順を実行します。
2. ログまでスクロールし、SAML ログファイルを開きます。
3. SAML レスポンス全体をコピーします。
4. SAML レスポンスを samlresponse.log という名前のローカルディレクトリ内のファイルに貼り付けます。次に、assume-role-with-saml を実行して STS トークンを呼び出します。
**注:**この例では awk を使用しています。Awk は Linux ベースのディストリビューションに適合しています。
aws sts assume-role-with-saml --role-arn arn:aws:iam::ACCOUNTNUMBER:role/IAM_ROLE --principal-arn arn:aws:iam::ACCOUNTNUMBER:saml-provider/SAML_PROVIDER --saml-assertion file://samlresponse.log awk -F: ' BEGIN { RS = "[,{}]" ; print "[PROFILENAME]"} /:/{ gsub(/"/, "", $2) } /AccessKeyId/{ print "aws_access_key_id = " $2 } /SecretAccessKey/{ print "aws_secret_access_key = " $2 } /SessionToken/{ print "aws_session_token = " $2 } ' >> ~/.aws/credentials
これにより、認証情報は ~/.aws/credentials ファイル内のプロファイルに保存されます。
5. (オプション) 認証情報をバックアップするには、次のコマンドを実行します。
cp -a ~/.aws/credentials ~/.aws/credentials.bak.
ヒント: ~/.aws/config に、適切な出力とリージョンが設定されたプロファイルが存在していることを確認してください。正しく設定されている場合は、入力を繰り返し求められることはありません。
6. --profile パラメータを使用してユーザー認証情報を呼び出します。
aws ec2 describe-instances --profile PROFILENAME
ファイルへのパイプがない assume-role-with-saml のサンプル出力:
{ "SubjectType": "persistent", "AssumedRoleUser": { "AssumedRoleId": "ROLE_ID_NUMBER:example@corp.example.com", "Arn": "arn:aws:sts::ACCOUNTNUMBER:assumed-role/ROLE_ID/example@corp.example.com" }, "Audience": "https://signin.aws.amazon.com/saml", "NameQualifier": "RANDOM_GENERATED_STRING", "Credentials": { "SecretAccessKey": "SECRET_ACCESS_KEY", "SessionToken": "TOKEN_KEY", "Expiration": "2015-05-11T20:00:49Z", "AccessKeyId": "ACCESS_KEY_ID" }, "Subject": "CORP\\\\EXAMPLE", "Issuer": "http://SERVER_NAME.corp.example.com/adfs/services/trust" }
認証情報ファイルへのパイプがある assume-role-with-saml のサンプル出力:
aws_access_key_id = ACCESS_KEY_ID aws_session_token = SESSION_TOKEN aws_secret_access_key = SECRET_ACCESS_KEY [PROFILENAME]
AssumeRole
注意: IAM 認証情報は、引き受ける IAM ロールを信頼する必要があります。
1. get-caller-identity の AWS コマンドを実行してレスポンスを確認します。
aws sts get-caller-identity
注意: レスポンスを受け取らない場合は、有効な IAM アクセスまたはシークレットキーが .aws/credentials ファイルに保存されているかを確認してください。
2. assume-role コマンドを実行します。
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/ExampleRole --role-session-name ExampleSession
次のようなレスポンスを受け取ります。
{ "AssumedRoleUser": { "AssumedRoleId": "AROAZRG5BQ2L7OB87N3RE:ExampleSession", "Arn": "arn:aws:sts::123456789012:assumed-role/RoleA/ExampleSession" }, "Credentials": { "SecretAccessKey": "JCNFKY7XCUwHWTKcQhmmFokpjLetCmNLZ7pg9SJe", "SessionToken": "FwoGZXIvYXdzEL7//////////wEaDNoBLBJUNYWKaHXZXCKvARBGJ4CqOs+p2JR2a7Euni0d0XuSs31ZA/1QqpX6Spfuz2WAvHCyqwbE3+oxyvyqYlO8dTJwp56YCFCJ6K4Prt9pMeZU9R5NGBJHvRbXXKfxp+jktLc/ItrAfn4GMXWpoyJKZrY7hzv3MASomlIcwSD/RqWIBS1vAoo1UAxwjy29jai0OAPQ51LAnuFKeabgmllyP5Y2gu488P19D7ikfgQtmBtH5I/Q8+5IEn4qMwYo1bq/8wUyLe1b3+mQwhq+zEz4TSyHD8HBXd9W3KYcB53MIotwiJNS+m0P5ZlZnpcJm3JwtA==", "Expiration": "2020-03-16T21:11:01Z", "AccessKeyId": "ASIAZRG8BQ4K2EBXGR42” } }
3. AccessKeyId、SecretAccessKey、SessionToken を環境変数にエクスポートします。
export AWS_ACCESS_KEY_ID=ASIAZRG8BQ4K2EBXGR42 export AWS_SECRET_ACCESS_KEY=JCNFKY7XCUwHWTKcQhmmFokpjLetCmNLZ7pg9SJe export AWS_SESSION_TOKEN=FwoGZXIvYXdzEL7//////////wEaDNoBLBJUNYWKaHXZXCKvARBGJ4CqOs+p2JR2a7Euni0d0XuSs31ZA/1QqpX6Spfuz2WAvHCyqwbE3+oxyvyqYlO8dTJwp56YCFCJ6K4Prt9pMeZU9R5NGBJHvRbXXKfxp+jktLc/ItrAfn4GMXWpoyJKZrY7hzv3MASomlIcwSD/RqWIBS1vAoo1UAxwjy29jai0OAPQ51LAnuFKeabgmllyP5Y2gu488P19D7ikfgQtmBtH5I/Q8+5IEn4qMwYo1bq/8wUyLe1b3+mQwhq+zEz4TSyHD8HBXd9W3KYcB53MIotwiJNS+m0P5ZlZnpcJm3JwtA==
4. ID を確認します。
aws sts get-caller-identity
出力には、assume-role 呼び出しからの ID 認証情報が表示されます。
AssumeRoleWithWebIdentity
注意: 有効な OAuth 2.0 アクセストークン、OpenID Connect トークン、および IdP を信頼する IAM ロールが必要です。
1. 次のような assume-role コマンドを実行します。
aws sts assume-role-with-web-identity --role-arn arn:aws:iam::123456789012:role/FederatedWebIdentityRole --role-session-name ExampleSession --web-identity-token Atza%7CIQEBLjAsAhRFiXuWpUXuRvQ9PZL3GMFcYevydwIUFAHZwXZXXXXXXXXJnrulxKDHwy87oGKPznh0D6bEQZTSCzyoCtL_8S07pLpr0zMbn6w1lfVZKNTBdDansFBmtGnIsIapjI6xKR02Yc_2bQ8LZbUXSGm6Ry6_BG7PrtLZtj_dfCTj92xNGed-CrKqjG7nPBjNIL016GGvuS5gSvPRUxWES3VYfm1wl7WTI7jn-Pcb6M-buCgHhFOzTQxod27L9CqnOLio7N3gZAGpsp6n1-AJBOCJckcyXe2c6uD0srOJeZlKUm2eTDVMf8IehDVI0r1QOnTV6KzzAI3OY87Vd_cVMQ
レスポンスの例:
{ "SubjectFromWebIdentityToken": "amzn1.account.AF6RHO7KZU5XRVQJGXK6HB56KR2A" "Audience": "client.5498841531868486423.1548@apps.example.com", "AssumedRoleUser": { "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/ExampleSession", "AssumedRoleId": "AROACLKWSDQRAOEXAMPLE:ExampleSession" } "Credentials": { "AccessKeyId": "AKIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE", "Expiration": "2020-05-19T18:06:10+00:00" }, "Provider": "www.amazon.com"
2. AccessKeyId、SecretAccessKey、SessionToken を .aws/credentials ファイルに保存します。
[ExampleRoleProfile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY aws_session_token=AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtpZ3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE
3. get-caller-identity コマンドを実行します。
aws sts get-caller-identity --profile ExampleRoleProfile
出力には、次のような assume-role 呼び出しからの ID 認証情報が表示されます。
{ "UserId": "AROACLKWSDQRAOEXAMPLE:ExampleSession", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/ExampleSession" }
関連情報
AD FS を使用して、Active Directory ユーザーに API または AWS CLI へのアクセス権を付与する方法を教えてください。

関連するコンテンツ
- 質問済み 2年前lg...
- 質問済み 7ヶ月前lg...
- 質問済み 7ヶ月前lg...
- 質問済み 2ヶ月前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 9ヶ月前