インスタンスメタデータからのセキュリティ認証情報の取得 - Amazon Elastic Compute Cloud

インスタンスメタデータからのセキュリティ認証情報の取得

インスタンスのアプリケーションはインスタンスメタデータアイテム iam/security-credentials/role-name のロールから提供されたセキュリティ認証情報を取得します。アプリケーションにはロールに関連付けられたセキュリティ認証情報によって、ロールに対して定義したアクションおよびリソースのアクセス許可が付与されます。これらのセキュリティ認証情報は一時的なものであり、私たちが自動的に循環させます。新しい認証情報は古い認証情報が失効する少なくとも 5 分前から有効になるようにします。

インスタンスのメタデータの詳細についてはインスタンスメタデータを使用して EC2 インスタンスを管理するを参照してください。

警告

IAM ロールでインスタンスメタデータを使用するサービスを使用する場合はサービスで HTTP 呼び出しが行われるときに認証情報を公開しないように注意する必要があります。認証情報を公開できるサービスの種類にはHTTP プロキシ、HTML/CSS 検証サービス、および XML インクルードをサポートする XML プロセッサーが含まれます。

アマゾン EC2 ワークロードでは次に説明する方法を使用してセッション認証情報を取得することをお勧めします。これらの認証情報により、インスタンスに既に関連付けられている同じロールを引き受けるために sts:AssumeRole を使用する必要なしに、ワークロードが AWS API リクエストを実行できるようにすることができます。属性ベースのアクセスコントロール (ABAC) のためにセッションタグを渡す必要がある場合や、ロールの許可をさらに制限するためにセッションポリシーを渡す必要がある場合でない限り、このようなロール引き受け呼び出しは不要です。これは同じ一時的なロールセッション認証情報の新しいセットを作成するためです。

ワークロードがロールを使用してそれ自体を引き受ける場合はその旨を明示的に許可する信頼ポリシーを作成する必要があります。信頼ポリシーを作成しない場合、AccessDenied エラーが発生します。詳細については IAM ユーザーガイド の「ロールの信頼ポリシーの変更」を参照してください。

以下のコマンドではs3access という名前の IAM ロールのセキュリティ認証情報を取得します。

cURL

IMDSv2

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access
PowerShell

IMDSv2

PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access

IMDSv1

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access

以下は出力例です。セキュリティ認証情報を取得できない場合は「IAM ユーザーガイド」の「EC2 インスタンスにある一時的なセキュリティ認証情報にアクセスできない」を参照してください。

{ "Code" : "Success", "LastUpdated" : "2012-04-26T16:39:16Z", "Type" : "AWS-HMAC", "AccessKeyId" : "ASIAIOSFODNN7EXAMPLE", "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "Token" : "token", "Expiration" : "2017-05-17T15:09:54Z" }

インスタンスで実行されるアプリケーション、AWS CLI、および Tools for Windows PowerShell コマンドのために、一時的なセキュリティ認証情報を明示的に取得する必要はありません。AWS SDK、AWS CLI、および Tools for Windows PowerShell はEC2 インスタンスメタデータサービスから自動的に認証情報を取得し、使用します。一時的なセキュリティ認証情報を使用してインスタンスの外部で呼び出しを行う (IAM ポリシーをテストするなど) にはアクセスキー、秘密キー、およびセッショントークンを提供する必要があります。詳細についてはIAM ユーザーガイドAWS リソースへのアクセスを要求するための一時的なセキュリティ認証情報の使用を参照してください。