AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
AWS CLI を使用して AssumeRole を呼び出し、一時的ユーザー認証情報を保存する方法を教えてください。
AWS コマンドラインインターフェイス (AWS CLI) を使用して AssumeRoleWithSAML、AssumeRole、AssumeRoleWithWebIdentity から認証情報を取得したいと考えています。
解決策
注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
AssumeRoleWithSAML、AssumeRole、AssumeRoleWithWebIdentity から認証情報を取得するには、API を呼び出して出力をテキストファイルに保存します。次に、その出力を使用して AWS CLI で API コマンドを呼び出します。
注: AssumeRoleWithSAML、AssumeRole、AssumeRoleWithWebIdentity の各コマンドには、パラメータ role-arn および role-session-name が必要です。
SAML 認証で認証情報を取得する
必要条件: ID プロバイダー (IdP) からの有効な SAML 2.0 応答、およびその IdP を信頼する AWS Identity and Access Management (IAM) ロールが必要です。
次の手順を実行します。
-
ログを見つけ、SAML ログファイルを開きます。
-
SAML 応答全体をコピーします。
-
SAML 応答をローカルディレクトリ内の samlresponse.log というファイルにコピーします。
-
次の assume-role-with-saml コマンドを実行し、AWS Security Token Service (AWS STS) トークンを呼び出します。
aws sts assume-role-with-saml --role-arn arn:aws:iam::444455556666:role/IAM_ROLE --principal-arn arn:aws:iam::444455556666: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注: Principal ARN を SAML プロバイダーの Amazon リソースネーム (ARN) に置き換えてください。この例では、Linux ベースのディストリビューションと互換性のある awk を使用します。assume-role-with-saml コマンドを実行すると、~/.aws/credentials ファイル内のプロファイルに認証情報が保存されます。
-
(オプション) 次のコマンドを実行して認証情報をバックアップします。
cp -a ~/.aws/credentials ~/.aws/credentials.bak. -
次の describe-instances コマンドを実行し、ユーザー認証情報を呼び出します。
aws ec2 describe-instances --profile PROFILENAME注: PROFILENAME をプロファイル名に置き換えてください。
ファイルに保存されていない出力例:{ "SubjectType": "persistent", "AssumedRoleUser": { "AssumedRoleId": "111122223333:example@corp.example.com", "Arn": "arn:aws:sts::44445555666: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" }認証情報ファイルに保存された出力例:
aws_access_key_id = ACCESS_KEY_ID aws_session_token = SESSION_TOKEN aws_secret_access_key = SECRET_ACCESS_KEY [PROFILENAME]
AssumeRole を使用して認証情報を取得する
重要: IAM 認証情報は、引き受ける IAM ロールを信頼する必要があります。
次の手順を実行します。
-
次の get-caller-identity コマンドを実行して応答を確認します。
aws sts get-caller-identity注: 応答を受信できない場合は、.aws/credentials ファイルに有効な IAM アクセスまたはシークレットキーが保存されているかどうかを確認します。
-
次の 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" } } -
応答から 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== -
次の get-caller-identity を実行して ID を確認します。
aws sts get-caller-identity出力には、assume-role 呼び出しで取得された ID 認証情報が表示されます。
AssumeRoleWithWebIdentity を使用して認証情報を取得する
必要条件: 有効な OAuth 2.0 アクセストークン、OpenID Connect トークン、および IdP を信頼する IAM ロールが必要です。
-
次の 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" -
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 -
get-caller-identity コマンドを実行します。
aws sts get-caller-identity --profile ExampleRoleProfileassume-role 呼び出しから取得された ID 認証情報の出力例:
{ "UserId": "AROACLKWSDQRAOEXAMPLE:ExampleSession", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/ExampleSession" }
関連情報
Active Directory ユーザーに対し、AD FS を使用して API や AWS CLI へのアクセス権を付与する方法を教えてください
- 言語
- 日本語

