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

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

一時的なセキュリティ認証情報をリクエストするには、AWS STS API アクションを使用できます。

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)。

  • 一時的なセキュリティ認証情報の有効期間を指定する期間。最短は 15 分(900 秒)、最長(デフォルト)は 1 時間(3600 秒)です。一時的な認証情報を 1 時間が経過する前に無効にする場合にのみ、この値を渡す必要があります。これは、この認証情報を使用してリクエストされる場合があるコンソールセッションの有効期間とは異なります。 コンソールサインイントークンに対するフェデレーションエンドポイントへのリクエストは、この API の DurationSeconds とは別に、コンソール セッションの最大長を指定する SessionDuration パラメーターを取得します。 詳細については、「フェデレーションユーザーに対して AWS マネジメントコンソール へのアクセスを許可する URL の作成(カスタムフェデレーションブローカー)」を参照してください。

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

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

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

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

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

例 リクエスト

Copy
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=3600 &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 リクエストに署名する」を参照してリクエストに署名する方法を確認してください。

この API は、一時的な認証情報が有効な期間を指定する DurationSeconds のパラメーターをサポートします。 これは、この一時的な認証情報を使用してリクエストされる場合があるコンソールセッションの有効期間とは異なります。 フェデレーションエンドポイントを呼び出し、コンソールのサインイントークンを取得するための一時的な認証情報を渡すことによって、コンソールサインイントークンをリクエストできます。 コンソールリクエストは、最大 12 時間の異なる SessionDuration パラメーターを使用します。 詳細については、「フェデレーションユーザーに対して AWS マネジメントコンソール へのアクセスを許可する URL の作成(カスタムフェデレーションブローカー)」を参照してください。

一時的セキュリティ認証情報に加えて、レスポンスにはフェデレーティッドユーザーの 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 プロバイダー(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 から取得したトークン。

  • 一時的なセキュリティ認証情報の有効期間を指定する期間。最短は 15 分(900 秒)、最長(デフォルト)は 1 時間(3600 秒)です。一時的な認証情報を 1 時間が経過する前に無効にする場合にのみ、この値を渡す必要があります。これは、この認証情報を使用してリクエストされる場合があるコンソールセッションの有効期間とは異なります。 コンソールサインイントークンに対するフェデレーションエンドポイントへのリクエストは、この API の DurationSeconds とは別に、コンソール セッションの最大長を指定する SessionDuration パラメーターを取得します。 詳細については、「フェデレーションユーザーに対して 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 は、認証システム(Windows Active Directory、OpenLDAP など)を、SAML アサーションを生成してユーザー ID とアクセス権限に関する情報を提供するソフトウェア(Active Directory Federation Services や Shibboleth など)に組み込んでいる組織で役立ちます。詳細については、「SAML 2.0 ベースのフェデレーションについて」を参照してください。

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

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

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

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

  • 一時的なセキュリティ認証情報の有効期間を指定する期間。最大値(デフォルト)は 1 時間(3600 秒)です。一時的な認証情報を 1 時間が経過する前に無効にする場合にのみ、この値を渡す必要があります。認証情報の最小期間は 15 分(900 秒)です。これは、この認証情報を使用してリクエストされる場合があるコンソールセッションの有効期間とは異なります。 コンソールサインイントークンに対するフェデレーションエンドポイントへのリクエストは、この API の DurationSeconds とは別に、コンソール セッションの最大長を指定する SessionDuration パラメーターを取得します。 詳細については、「フェデレーションユーザーに対して 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 時間までではなく 36 時間まで)という点で AssumeRole とは異なります。より長い有効期限により、何度も新しい認証情報を取得する必要がなくなるので、AWS の呼び出しの回数を減らすことができます。詳細については、「一時的なセキュリティ認証情報のリクエスト」を参照してください。

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

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

例 リクエスト

Copy
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=3600 &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 バケットがあるが、彼女の一時的セキュリティ認証情報にバケットのポリシーが含まれていない場合、arn:aws:sts::111122223333:federated-user/Susan など、Susan の ARN と一致する ARN のポリシーを確実にバケットが持っている必要があります。

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

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

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

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

例 リクエスト

Copy
https://sts.amazonaws.com/ ?Version=2011-06-15 &Action=GetSessionToken &DurationSeconds=3600 &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 認証が有効である限り、この一時的なセキュリティ認証情報を使用して、MFA で保護された API アクションまたは AWS ウェブサイトにアクセスすることができます。

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

Copy
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)の機能を比較したものです。

API オプションの比較

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

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

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

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

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

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

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

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 ユーザー)はコンソールにサインインできます。*