メニュー
AWS Identity and Access Management
ユーザーガイド

一時的なセキュリティ認証情報のリクエスト

一時的なセキュリティ認証情報をリクエストするには、AWS STS API アクションを使用できます。AWS Security Token Service (AWS STS) を使用して、AWS リソースへのアクセスを制御できる一時的セキュリティ認証情報を持つ、信頼されたユーザーを作成および提供することができます。AWS STSの詳細については、「一時的セキュリティ認証情報」を参照してください。ロールを引き受けることで一時的なセキュリティ認証情報をリクエストするための別の方法については、「IAM ロールを使用する」を参照してください。

API オペレーションの呼び出しを行うには、AWS SDK を使用できます。AWS SDK は、Java、.NET、Python、Ruby、Android、iOS など、さまざまなプログラミング言語や環境で使用できます。SDK は、リクエストへの暗号を使用した署名、必要に応じてリクエストの再試行、エラーレスポンスの処理などのタスクを処理します。AWS Security Token Service API リファレンス で説明されている AWS STS クエリ API も使用することができます。最後に、AWS STS コマンドは AWS Command Line Interface および AWS Tools for Windows PowerShell という 2 つのコマンドラインツールでサポートされています。

AWS STS API アクションは、アクセスキーおよびセッショントークンで構成された一時的セキュリティ認証情報を返します。アクセスキーは、アクセスキー ID とシークレットキーで構成されます。ユーザー(またはユーザーが実行しているアプリケーション)はこれらの認証情報を使用して、リソースにアクセスできます。認証情報が作成されると、その認証情報を使用したときにユーザーが実行できることを制限する IAM のアクセスコントロールポリシーに関連付けられます。詳細については、「一時的なセキュリティ認証情報を使用して AWS リソースへのアクセスをリクエストする」を参照してください。

重要

一時的セキュリティ認証情報を使用できる期間は短いですが、一時的なアクセス権を持つユーザーは、AWS リソースに永続的変更を行うことができます。たとえば、一時的アクセス権を持つユーザーが Amazon EC2 インスタンスを起動した場合、インスタンスは引き続き実行され、AWS アカウントに対する料金が発生します。インスタンスはユーザーの一時的セキュリティ認証情報の有効期間が切れた後も、引き続き実行されます。

注記

STS API オペレーションから返されるセキュリティトークンのサイズは固定ではありません。最大サイズを仮定しないことを強くお勧めします。本文書の執筆時点では、一般的なサイズは 4096 バイト未満ですが、変化する可能性があります。さらに、AWS の今後の更新により大きいサイズが必要となる可能性があります。

AWS リージョンを使用した AWS STS の使用

AWS STS API 呼び出しは、グローバルエンドポイントにも、リージョンのエンドポイントの 1 つに対しても送信できます。より近くのエンドポイントを選択した場合、レイテンシーを軽減し、API 呼び出しのパフォーマンスが向上します。また、元のエンドポイントとの通信ができなくなった場合は、代替リージョンのエンドポイントに呼び出しを送信することもできます。各種 AWS SDK の 1 つを使用している場合、API 呼び出しを行う前に SDK メソッドを使用してリージョンを選択します。手動で HTTP API リクエストを組み立てている場合、独自で正しいエンドポイントにリクエストを送信する必要があります。詳細については、リージョンとエンドポイント」の AWS STS セクションと「AWS リージョンでの AWS STS のアクティブ化と非アクティブ化」を参照してください。

AWS 環境およびアプリケーションで使用する一時的な認証情報の取得に使用できる API オペレーションを、次に示します。

AssumeRole — クロスアカウントの委任とカスタム ID ブローカーを経由したフェデレーション

この API アクションは、既存の IAM ユーザーに、別の AWS アカウントのリソースなど、まだアクセスできない AWS リソースへのアクセスを許可する際に役立ちます。また、既存の IAM ユーザーが特権アクセスを一時的に取得する方法としても役立ちます。たとえば、多要素認証 (MFA) を提供する場合などです。既存の IAM ユーザーの認証情報を使用してこの API を呼び出す必要があります。詳細については、「IAM ユーザーにアクセス権限を委任するロールの作成」および「MFA 保護 API アクセスの設定」を参照してください。

この呼び出しは、有効な AWS セキュリティ認証情報を使用して実行される必要があります。 この呼び出しを行うときに、以下の情報を渡します。

  • アプリが引き受ける必要のあるロールの Amazon リソースネーム (ARN)。

  • 一時的なセキュリティ認証情報の期間を指定する期間。DurationSeconds パラメータを使用して、ロールセッションの期間を 900 秒 (15 分) からそのロールの最大セッション期間設定まで指定できます。ロールの最大値を確認する方法については、「ロールの最大セッション期間設定の表示」を参照してください。このパラメータを渡さない場合、一時的な認証情報の有効期限は 1 時間です。この API の DurationSeconds パラメータは、コンソールセッションの期間を指定する SessionDuration HTTP パラメータとは別のものです。コンソールのサインイントークンの場合は、フェデレーションエンドポイントに対するリクエストで SessionDuration HTTP パラメータを使用します。詳細については、「フェデレーションユーザーに対して AWS マネジメントコンソール へのアクセスを許可する URL の作成(カスタムフェデレーションブローカー)」を参照してください。

  • ロールセッション名。これはセッションの識別に使用できる文字列値です。この値は CloudTrail によってキャプチャおよび記録され、監査中のロールユーザーの区別に役立ちます。

  • オプションで、ポリシー(JSON 形式)。このポリシーは、ロールに関連付けられたポリシーと結合されます。指定した場合、アクセス許可はロールに付与されるものと、ポリシーによって付与されるものの共通集合になります。 このポリシーを使用して、ロールのアクセス権限ポリシーで設定済みの制限を超えて、一時的な認証情報に関連付けられたアクセス権限をさらに制限できます。このポリシーは、引き受けたロールのアクセス権限を超えて、アクセス権限を昇格することはできないことに注意してください。

  • Multi-Factor Authentication (MFA) を使用するように設定されている場合、MFA デバイスの ID と、このデバイスによって提供されるワンタイムコードを含めます。

  • サードパーティーにアカウントへのアクセス権を委任するときに使用できるオプションの ExternalID 値。この値を利用して、指定されたサードパーティーだけがロールにアクセスできるようにします。詳細については、「AWS リソースへのアクセス権を第三者に付与するときに外部 ID を使用する方法」を参照してください。

以下の例は、AssumeRole を使用したリクエストと応答のサンプルを示します。この例では、リクエストに Bob という名前のセッション名が含まれます。Policy パラメータには、生成される認証情報が Amazon S3 のみアクセスできるアクセス権限を持つように指定する JSON ドキュメントが含まれます。

例 リクエスト

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=AssumeRole &RoleSessionName=Bob &RoleArn=arn:aws::iam::123456789012:role/demo &Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%20%22Stmt1%22%2C%22Effect%22%3A%20%22Allow%22%2C%22Action%22%3A%20%22s3%3A*%22%2C%22Resource%22%3A%20%22*%22%7D%5D%7D &DurationSeconds=1800 &ExternalId=123ABC &AUTHPARAMS

注記

上記の例に示すポリシーの値は、次のポリシーの URL エンコードされたバージョンです。

{"Version":"2012-10-17","Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}

また、例の AUTHPARAMS パラメータは、認証情報のプレースホルダー、つまり AWS HTTP API リクエストに含める必要がある署名としての役割を果たします。当社では、AWS SDK を使用して API リクエストを作成することをお勧めします。その利点の 1 つは、SDK がリクエストの署名を処理することです。API リクエストを手動で作成し、署名する必要がある場合は、『アマゾン ウェブ サービス全般のリファレンス』の「署名バージョン 4 を使用して AWS リクエストに署名する」を参照してリクエストに署名する方法を確認してください。

一時的セキュリティ認証情報に加えて、レスポンスにはフェデレーティッドユーザーの Amazon リソースネーム(ARN)、および認証情報の有効期限が含まれています。

例 レスポンス

<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <AssumeRoleResult> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2011-07-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> <AssumedRoleUser> <Arn>arn:aws:sts::123456789012:assumed-role/demo/Bob</Arn> <AssumedRoleId>ARO123EXAMPLE123:Bob</AssumedRoleId> </AssumedRoleUser> <PackedPolicySize>6</PackedPolicySize> </AssumeRoleResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </AssumeRoleResponse>

注記

AssumeRole は、ポリシーをひとまとめにした形式で保存します。AssumeRole は、許容されている最大サイズに対する割合でサイズを返すため、呼び出しパラメータは調整できます。ポリシーのサイズの制限の詳細については『AWS Security Token Service API リファレンス』の「AssumeRole」を参照してください。

AssumeRoleWithWebIdentity — ウェブベースの ID プロバイダーを経由したフェデレーション

この API オペレーションは、パブリック ID プロバイダーを経由して認証されたフェデレーティッドユーザーの一時的なセキュリティ認証情報のセットを返します。パブリック ID プロバイダーの例としては、Login with Amazon、Facebook、Google、または OpenID Connect (OIDC) に対応している任意の ID プロバイダーがあります。この API は、AWS へのアクセスを必要としながら、ユーザーは自身の AWS または IAM の ID を持たないモバイルアプリケーションやクライアントベースのウェブアプリケーションを作成する際に役立ちます。詳細については、「ウェブ ID フェデレーションについて」を参照してください。

注記

AssumeRoleWithWebIdentity を直接呼び出すのではなく、モバイル開発用の AWS SDK で Amazon Cognito および Amazon Cognito 認証情報プロバイダーを使用することをお勧めします。詳細については、以下を参照してください。

Amazon Cognito を使用していない場合は、AWS STS の AssumeRoleWithWebIdentity アクションを呼び出します。これは無署名の呼び出しです。つまり、アプリが AWS セキュリティ認証情報にアクセスできなくても呼び出すことができます。この呼び出しを行うときに、以下の情報を渡します。

  • アプリが引き受ける必要のあるロールの Amazon リソースネーム (ARN)。アプリで複数のサインイン方法をサポートしている場合は、ID プロバイダーごとに 1 つずつ、複数のロールを定義する必要があります。AssumeRoleWithWebIdentity を呼び出すときは、ユーザーがサインインしたプロバイダーに固有のロールの ARN を含める必要があります。

  • アプリがユーザーを認証した後、IdP から取得したトークン。

  • 一時的なセキュリティ認証情報の期間を指定する期間。DurationSeconds パラメータを使用して、ロールセッションの期間を 900 秒 (15 分) からそのロールの最大セッション期間設定まで指定できます。ロールの最大値を確認する方法については、「ロールの最大セッション期間設定の表示」を参照してください。このパラメータを渡さない場合、一時的な認証情報の有効期限は 1 時間です。この API の DurationSeconds パラメータは、コンソールセッションの期間を指定する SessionDuration HTTP パラメータとは別のものです。コンソールのサインイントークンの場合は、フェデレーションエンドポイントに対するリクエストで SessionDuration HTTP パラメータを使用します。詳細については、「フェデレーションユーザーに対して AWS マネジメントコンソール へのアクセスを許可する URL の作成(カスタムフェデレーションブローカー)」を参照してください。

  • ロールセッション名。これはセッションの識別に使用できる文字列値です。この値は CloudTrail によってキャプチャおよび記録され、監査中のロールユーザーの区別に役立ちます。

  • オプションで、ポリシー(JSON 形式)。このポリシーは、ロールに関連付けられたポリシーと結合されます。指定した場合、アクセス許可はロールに付与されるものと、ポリシーによって付与されるものの共通集合になります。 このポリシーを使用して、ロールのアクセス権限ポリシーで設定済みの制限を超えて、一時的な認証情報に関連付けられたアクセス権限をさらに制限できます。このポリシーは、引き受けたロールのアクセス権限を超えて、権限を昇格することはできないことに注意してください。

    注記

    AssumeRoleWithWebIdentity に対する呼び出しは署名 (暗号化) されていません。そのため、信頼されている経路を通じてリクエストが送信される場合にのみ、このオプションポリシーを含める必要があります。そうでない場合、他のユーザーが制限を削除するようにポリシーを変更できます。

AssumeRoleWithWebIdentity を呼び出すとき、AWS はトークンの信頼性を確認します。たとえば、プロバイダーに応じて、AWS はプロバイダーを呼び出して、アプリが渡したトークンを含める場合があります。ID プロバイダーがトークンを確認した場合、AWS は次の情報を返します。

  • 一時的なセキュリティ認証情報一式。一時的なセキュリティ認証情報は、アクセスキー ID、シークレットアクセスキー、およびセッショントークンで構成されています。

  • 引き受けたロールのロール ID と ARN。

  • 一意のユーザー ID を含む SubjectFromWebIdentityToken 値。

一時的なセキュリティ認証情報がある場合、それを使って AWS API を呼び出すことができます。これは、長期的なセキュリティ認証情報を使用した AWS API 呼び出しと同じ処理です。ただし、セッショントークンを含めて、一時的なセキュリティ認証情報が有効であることを AWS が確認できるようにする必要があります。

アプリで認証情報をキャッシュする必要があります。先述したように、認証情報はデフォルトで 1 時間後に無効になります。AWS SDK の AmazonSTSCredentialsProvider オペレーションを使用していない場合、再度 AssumeRoleWithWebIdentity を呼び出すかどうかはお客様およびお客様のアプリによります。古い認証情報が失効する前に、このオペレーションを呼び出して新しい一時的なセキュリティ認証情報を取得します。

AssumeRoleWithSAML — SAML 2.0 と互換性のあるエンタープライズ ID プロバイダーを経由するフェデレーション

この API オペレーションは、組織の既存の ID システムによって認証されたフェデレーティッドユーザーの一時的なセキュリティ認証情報のセットを返します。また、ユーザーは SAML 2.0 (Security Assertion Markup Language) を使用して AWS に認証および許可情報を渡す必要があります。この API オペレーションは、SAML アサーションを生成できるソフトウェアに認証システム (Windows Active Directory、OpenLDAP など) を統合している組織で役立ちます。このような統合はユーザー ID とアクセス権限に関する情報を提供します (Active Directory Federation Services や Shibboleth など)。詳細については、「SAML 2.0 ベースのフェデレーションについて」を参照してください。

これは無署名の呼び出しです。つまり、アプリが AWS セキュリティ認証情報にアクセスできなくても呼び出すことができます。この呼び出しを行うときに、以下の情報を渡します。

  • アプリが引き受ける必要のあるロールの Amazon リソースネーム (ARN)。

  • ID プロバイダーを表す IAM で作成された SAML プロバイダーの ARN。

  • アプリからのサインインリクエストに対する認証レスポンスで、SAML ID プロバイダーによって提供される、base-64 でエンコードされた SAML アサーション。

  • 一時的なセキュリティ認証情報の期間を指定する期間。DurationSeconds パラメータを使用して、ロールセッションの期間を 900 秒 (15 分) からそのロールの最大セッション期間設定まで指定できます。ロールの最大値を確認する方法については、「ロールの最大セッション期間設定の表示」を参照してください。このパラメータを渡さない場合、一時的な認証情報の有効期限は 1 時間です。この API の DurationSeconds パラメータは、コンソールセッションの期間を指定する SessionDuration HTTP パラメータとは別のものです。コンソールのサインイントークンの場合は、フェデレーションエンドポイントに対するリクエストで SessionDuration HTTP パラメータを使用します。詳細については、「フェデレーションユーザーに対して AWS マネジメントコンソール へのアクセスを許可する URL の作成(カスタムフェデレーションブローカー)」を参照してください。

  • ポリシー(JSON 形式)。このポリシーは、ロールに関連付けられたポリシーと結合されます。指定した場合、アクセス許可はロールに付与されるものと、ポリシーによって付与されるものの共通集合になります。 このポリシーを使用して、ロールのアクセス権限ポリシーで設定済みの制限を超えて、一時的な認証情報に関連付けられたアクセス権限をさらに制限できます。このポリシーは、引き受けたロールのアクセス権限を超えて、アクセス権限を昇格することはできないことに注意してください。

AssumeRoleWithSAML を呼び出すときに、AWS は SAML アサーションの信頼性を確認します。ID プロバイダーがアサーションを確認した場合、AWS は次の情報を返します。

  • 一時的なセキュリティ認証情報一式。一時的なセキュリティ認証情報は、アクセスキー ID、シークレットアクセスキー、およびセッショントークンで構成されています。

  • 引き受けたロールのロール ID と ARN。

  • SAML アサーションの SubjectConfirmationData エレメントの Recipient 属性値を含む Audience 値。

  • SAML アサーションの Issuer エレメントの値を含む Issuer 値。

  • Issuer 値、AWS アカウント ID、SAML プロバイダーのフレンドリ名から構築されたハッシュ値を含む NameQualifier エレメント。Subject エレメントと結合する場合、フェデレーティッドユーザーを一意に識別できます。

  • SAML アサーションの Subject エレメント内の NameID エレメントの値を含む Subject エレメント。

  • Subject エレメントの形式を示す SubjectType エレメント。値は、persistenttransient、または SAML アサーションで使用されている Subject および NameID エレメントの完全な Format URI とすることができます。NameID エレメントの Format 属性の詳細については、「認証レスポンスの SAML アサーションを設定する」を参照してください。

一時的なセキュリティ認証情報がある場合、それを使って AWS API を呼び出すことができます。これは、長期的なセキュリティ認証情報を使用した AWS API 呼び出しと同じ処理です。ただし、セッショントークンを含めて、一時的なセキュリティ認証情報が有効であることを AWS が確認できるようにする必要があります。

アプリで認証情報をキャッシュする必要があります。認証情報はデフォルトで 1 時間後に無効になります。AWS SDK の AmazonSTSCredentialsProvider アクションを使用していない場合、再度 AssumeRoleWithSAML を呼び出すかどうかはお客様およびお客様のアプリによります。古い認証情報が失効する前に、このオペレーションを呼び出して新しい一時的なセキュリティ認証情報を取得します。

GetFederationToken — カスタム ID ブローカーを経由したフェデレーション

この API は、フェデレーティッドユーザー用の一時的セキュリティ認証情報を返します。この API は、デフォルトの有効期限が大幅に長い (1 時間ではなく 12 時間) という点で AssumeRole とは異なります。また、DurationSeconds パラメータを使用して、一時的なセキュリティ認証情報が有効である期間を選択することもできます。作成された認証情報は指定された期間 (900 秒 (15 分) から 129,600 秒 (36 時間)) 有効です。有効期限が長いほど、何度も新しい認証情報を取得する必要がなくなるので、AWS の呼び出し回数を減らすことができます。詳細については、「一時的なセキュリティ認証情報のリクエスト」を参照してください。

フェデレーティッドユーザーの一時的セキュリティ認証情報を取得するためにリクエストを作成するときは、特定のユーザー ID (IAM ユーザー) の認証情報を使用してリクエストを作成します。一時的セキュリティ認証情報のアクセス権限は、GetFederationToken を呼び出したときに渡す IAM ポリシーによって決まります。

GetFederationToken 呼び出しは、セキュリティトークン、アクセスキー、シークレットキー、失効情報で構成される一時的セキュリティ認証情報を返します。組織内でアクセス権限を管理する(たとえば、プロキシアプリケーションを使用してアクセス権限を割り当てる)場合、GetFederationToken を使用できます。GetFederationToken を使用したサンプルアプリケーションを見るには、AWS サンプルコードとライブラリの「Active Directory ユースケースのための ID フェデレーションのサンプルアプリケーション」を参照してください。

以下の例に、GetFederationToken を使用したリクエストと応答のサンプルを示します。この例では、リクエストに Jean というフェデレーティッドユーザーの名前が含まれています。Policy パラメータには、生成される認証情報が Amazon S3 のみアクセスできるアクセス権限をもつように指定する JSON ドキュメントが含まれます。一時的セキュリティ認証情報に加えて、レスポンスにはフェデレーティッドユーザーの Amazon リソースネーム(ARN)、および認証情報の有効期限が含まれています。

例 リクエスト

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetFederationToken &Name=Jean &Policy=%7B%22Version%22%3A%222012-10-17%22%2C%22Statement%22%3A%5B%7B%22Sid%22%3A%22Stmt1%22%2C%22Effect%22%3A%22Allow%22%2C%22Action%22%3A%22s3%3A*%22%2C%22Resource%22%3A%22*%22%7D%5D%7D &DurationSeconds=1800 &AUTHPARAMS

注記

上記の例に示すポリシーの値は、このポリシーの URL エンコードされたバージョンです。

{"Version":"2012-10-17","Statement":[{"Sid":"Stmt1","Effect":"Allow","Action":"s3:*","Resource":"*"}]}

また、例の &AUTHPARAMS パラメータは、認証情報のプレースホルダー、つまり AWS HTTP API リクエストに含める必要がある署名としての役割を果たします。当社では、AWS SDK を使用して API リクエストを作成することをお勧めします。その利点の 1 つは、SDK がリクエストの署名を処理することです。API リクエストを手動で作成し、署名する必要がある場合は、『アマゾン ウェブ サービス全般のリファレンス』の「署名バージョン 4 を使用して AWS リクエストに署名する」を参照してリクエストに署名する方法を確認してください。

例 レスポンス

<GetFederationTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetFederationTokenResult> <Credentials> <SessionToken> AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQW LWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGd QrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU 9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz +scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCEXAMPLE== </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2011-07-15T23:28:33.359Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE;</AccessKeyId> </Credentials> <FederatedUser> <Arn>arn:aws:sts::123456789012:federated-user/Jean</Arn> <FederatedUserId>123456789012:Jean</FederatedUserId> </FederatedUser> <PackedPolicySize>6</PackedPolicySize> </GetFederationTokenResult> <ResponseMetadata> <RequestId>c6104cbe-af31-11e0-8154-cbc7ccf896c7</RequestId> </ResponseMetadata> </GetFederationTokenResponse>

注記

GetFederationToken は、ポリシーをひとまとめにした形式で保存します。オペレーションは、許容されている最大サイズに対する割合でサイズを返すため、呼び出しパラメータは調整できます。ポリシーのサイズの制限の詳細については『AWS Security Token Service API リファレンス』の「GetFederationToken」を参照してください。

リソースレベルでアクセス権限を付与する(たとえば、Amazon S3 バケットにポリシーをアタッチする)場合、Policy パラメータは省略できます。ただし、フェデレーティッドユーザーのポリシーを含まない場合、一時的セキュリティ認証情報ではアクセス権限が付与されません。この場合、リソースポリシーを使用してフェデレーティッドユーザーに AWS リソースへのアクセス権を付与する必要があります

たとえば、AWS アカウント番号が 111122223333 で、Susan にアクセスを許可しようとしている Amazon S3 バケットがあるとします。Susan の一時的セキュリティ認証情報にはバケットのポリシーが含まれていません。この場合、Susan の ARN (arn:aws:sts::111122223333:federated-user/Susan など) と一致する ARN があるポリシーがバケットにあるようにする必要があります。

GetSessionToken — 信頼されていない環境にあるユーザー向けの一時的認証情報

この API は、既存の IAM ユーザーに一時的セキュリティ認証情報一式を返します。たとえば、AWS リクエストを MFA が IAM ユーザーに対して有効なときのみに制限するなど、セキュリティを強化するために役立ちます。認証情報は一時的なものであるため、モバイルデバイスやウェブブラウザのような安全性の低い環境からリソースにアクセスする IAM ユーザーがいる場合、これによりセキュリティが強化されます。詳細については、「一時的なセキュリティ認証情報のリクエスト」、または『AWS Security Token Service API リファレンス』の「GetSessionToken」を参照してください。

デフォルトでは、IAM ユーザーの一時的なセキュリティ認証情報は、最大 12 時間有効です。ただし、DurationSeconds パラメータを使用して最短 15 分、最長 36 時間の有効期間をリクエストできます。セキュリティ上の理由から、AWS アカウントのルートユーザー のトークンは有効期間が 1 時間に制限されます。

GetSessionToken は、セキュリティトークン、アクセスキー ID、およびシークレットアクセスキーから構成される一時的なセキュリティ認証情報を返します。以下の例は、GetSessionToken を使用したリクエストと応答のサンプルを示します。レスポンスには、一時的なセキュリティ認証情報の有効期限も含んでいます。

例 リクエスト

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=1800 &AUTHPARAMS

注記

前の例の [&AUTHPARAMS] パラメータは、認証情報のプレースホルダ、すなわち AWS HTTP API リクエストに含める必要がある署名としての役割を果たします。当社では、AWS SDK を使用して API リクエストを作成することをお勧めします。その利点の 1 つは、SDK がリクエストの署名を処理することです。API リクエストを手動で作成し、署名する必要がある場合は、『アマゾン ウェブ サービス全般のリファレンス』の「署名バージョン 4 を使用して AWS リクエストに署名する」を参照してリクエストに署名する方法を確認してください。

例 レスポンス

<GetSessionTokenResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/"> <GetSessionTokenResult> <Credentials> <SessionToken> AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/L To6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3z rkuWJOgQs8IZZaIv2BXIa2R4OlgkBN9bkUDNCJiBeb/AXlzBBko7b15fjrBs2+cTQtp Z3CYWFXG8C5zqx37wnOE49mRl/+OtkIKGO7fAE </SessionToken> <SecretAccessKey> wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY </SecretAccessKey> <Expiration>2011-07-11T19:55:29.611Z</Expiration> <AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> </Credentials> </GetSessionTokenResult> <ResponseMetadata> <RequestId>58c5dbae-abef-11e0-8cfe-09039844ac7d</RequestId> </ResponseMetadata> </GetSessionTokenResponse>

オプションで、GetSessionToken リクエストに、AWS の多要素認証(MFA)で確認する SerialNumber および TokenCode 値を含めることができます。指定された値が有効であれば、AWS STS は、MFA 認証の状態を含む一時的なセキュリティ認証情報を提供します。この一時的セキュリティ認証情報を使用して、MFA で保護された API オペレーションまたは AWS ウェブサイトに、MFA 認証が有効である限りアクセスできます。

以下の例は、MFA 認証コードとデバイスのシリアルナンバーを含む GetSessionToken リクエストを示しています。

https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=7200 &SerialNumber=YourMFADeviceSerialNumber &TokenCode=123456 &AUTHPARAMS

注記

AWS STS の呼び出しは、グローバルエンドポイントまたは AWS アカウントをアクティブ化しているリージョンのエンドポイントに対して行えます。詳細については、リージョンとエンドポイントの AWS STS セクションを参照してください。

また、前の例の [&AUTHPARAMS] パラメータは、認証情報のプレースホルダ、すなわち AWS HTTP API リクエストに含める必要がある署名としての役割を果たします。当社では、AWS SDK を使用して API リクエストを作成することをお勧めします。その利点の 1 つは、SDK がリクエストの署名を処理することです。API リクエストを手動で作成し、署名する必要がある場合は、『アマゾン ウェブ サービス全般のリファレンス』の「署名バージョン 4 を使用して AWS リクエストに署名する」を参照してリクエストに署名する方法を確認してください。

AWS STS API オペレーションの比較

次の表は、一時的なセキュリティ認証情報を返す、AWS STS の API オペレーションの機能を比較したものです。ロールを引き受けることで一時的なセキュリティ認証情報をリクエストするための別の方法については、「IAM ロールを使用する」を参照してください。

API オプションの比較

AWS STS API 呼び出し元 認証情報の有効期間 (最小 | 最大 | デフォルト) MFA サポート¹ 渡されたポリシーのサポート² 得られた一時的な認証情報に対する制限
AssumeRole IAM ユーザー、または既存の一時的なセキュリティ認証情報を持つユーザー 15 分 | 最大セッション期間設定³ | 1 時間 はい はい

GetFederationToken または GetSessionToken を呼び出せません。

AssumeRoleWithSAML 任意のユーザー。呼び出し元は、既知の ID プロバイダーからの認証を示す SAML 認証レスポンスを渡す必要があります。 15 分 | 最大セッション期間設定³ | 1 時間 いいえ はい

GetFederationToken または GetSessionToken を呼び出せません。

AssumeRoleWithWebIdentity 任意のユーザー。呼び出し元は、既知の ID プロバイダーからの認証を示すウェブ ID トークンを渡す必要があります。 15 分 | 最大セッション期間設定³ | 1 時間 いいえ はい

GetFederationToken または GetSessionToken を呼び出せません。

GetFederationToken IAM ユーザーまたは AWS アカウントのルートユーザー

IAM ユーザー: 15 分 | 36 時間 | 12 時間

ルートユーザー: 15 分 | 1 時間 | 1 時間

いいえ はい

IAM API オペレーションを直接呼び出せません。

コンソールへの SSO は許可されています。⁴

GetCallerIdentity を除く AWS STS API オペレーションを呼び出せません。

GetSessionToken IAM ユーザーまたは ルートユーザー

IAM ユーザー: 15 分 | 36 時間 | 12 時間

ルートユーザー: 15 分 | 1 時間 | 1 時間

はい いいえ

リクエストに MFA 情報が含まれていない場合は、IAM API オペレーションを呼び出せません。

AssumeRole または GetCallerIdentity を除く AWS STS API オペレーションを呼び出せません。

コンソールへのシングルサインオン (SSO) は許可されませんが、パスワードを持っているユーザー(ルートまたは IAM ユーザー)はコンソールにサインインできます。*

¹ MFA サポート. AssumeRole および GetSessionToken API オペレーションを呼び出すときに、多要素認証 (MFA) デバイスに関する情報を含めることができます。そうすることで、API 呼び出しによって得られた一時的なセキュリティ認証情報を、MFA デバイスで認証されたユーザーだけが使用できるようにできます。詳細については、「MFA 保護 API アクセスの設定」を参照してください。

² 渡されたポリシーのサポート. IAM ポリシーは、パラメータとしてほとんどの AWS STS API オペレーションに渡すことができ、ユーザーに影響する他のポリシー (ある場合) と組み合わせて使用できます。ポリシーをパラメータとして使用することで、ユーザーが API コールによって得られた一時的認証情報を使用して実行できることを特定できます。詳細については、次のトピックを参照してください。

³ 最大セッション期間設定DurationSeconds パラメータを使用して、ロールセッションの期間を 900 秒 (15 分) からそのロールの最大セッション期間設定まで指定できます。ロールの最大値を確認する方法については、「ロールの最大セッション期間設定の表示」を参照してください。

コンソールへのシングルサインオン (SSO)。SSO をサポートするために、AWS でフェデレーションエンドポイント (https://signin.aws.amazon.com/federation) を呼び出して、一時的なセキュリティ認証情報を渡すことができます。エンドポイントから返されるトークンを使用すると、パスワードを要求せずにユーザーを直接コンソールにサインインさせる URL を作成できます。詳細については、AWS セキュリティブログの「SAML 2.0 フェデレーションユーザーが AWS マネジメントコンソールにアクセス可能にする」および「AWS マネジメントコンソールへのクロスアカウントアクセスを有効にする方法」を参照してください。