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

一時的なセキュリティ認証情報のアクセス権限を無効にする

一時的なセキュリティ認証情報は、期限が切れるまで有効で、取り消すことはできません。ただし、アクセス権限は、認証情報を使用する AWS リクエストがなされるたびに評価されるため、発行後に認証情報のアクセス権を変更することで、認証情報を取り消すのと同等の効果を得ることができます。一時的なセキュリティ認証情報からすべてのアクセス権限を削除すると、その後、その認証情報を使用する AWS リクエストは失敗します。一時的なセキュリティ認証情報に割り当てられたアクセス権限を変更または削除する仕組みについては、以降のセクションでは説明します。

注記

既存のポリシーのアクセス権限を更新したとき、または、ユーザーやリソースに新しいポリシーを適用したときに、ポリシーの更新が有効になるまでに数分かかることがあります。

一時的なセキュリティ認証情報の作成者のアクセスを拒否する

一時的なセキュリティ認証情報に割り当てられたアクセス権限を変更または削除するために、認証情報の作成者に関連付けられたアクセス権限を変更または削除することができます。認証情報の作成者は、認証情報を取得するために使用された AWS STS API によって決定されます。作成者に関連付けられたアクセス権限を変更または削除する仕組みについては、以降のセクションで説明します。

AssumeRole、AssumeRoleWithSAML、AssumeRoleWithWebIdentity によって作成された認証情報のアクセスを拒否する

AssumeRoleAssumeRoleWithSAMLAssumeRoleWithWebIdentity API を呼び出して取得した一時的なセキュリティ認証情報に割り当てたアクセス権限を変更または削除するには、引き受けたロールのアクセス権限を定義するロールアクセスポリシーを編集または削除します。ロールを引き受けることで取得した一時的なセキュリティ認証情報は、引き受けたロールのアクセスポリシーで定義されたアクセス権限を超えるアクセス権限を持つことはできません。また、一時的なセキュリティ認証情報に割り当てられたアクセス権限は、AWS リクエストで使用されるたびに評価されます。ロールのアクセスポリシーを編集または削除すると、その変更内容は、ロールのアクセスポリシーを変更する前に発行された認証情報も含めて、そのロールに関連付けられているすべての一時的なセキュリティ認証情報のアクセス権限に影響します。

ロールアクセスポリシーの編集の詳細については、「ロールの修正」を参照してください。

GetFederationToken または GetSessionToken によって作成された認証情報のアクセスを拒否する

GetFederationToken または GetSessionToken API を呼び出して取得した一時的なセキュリティ認証情報に割り当てられたアクセス権限を変更または削除するには、GetFederationToken または GetSessionToken を呼び出すときに認証情報を使用した IAM ユーザーにアタッチされたポリシーを編集または削除します。GetFederationToken または GetSessionToken を呼び出して取得した一時的なセキュリティ認証情報は、IAM ユーザーがその取得に使用した認証情報を超えるアクセス権限を持つことはありません。また、一時的なセキュリティ認証情報に割り当てられたアクセス権限は、AWS リクエストの実行に使用されるたびに評価されます。重要な注意点として、IAM ユーザーのアクセス権限を編集または削除すると、変更内容はその IAM ユーザーのほかに、そのユーザーが作成したすべての一時的なセキュリティ認証情報にも影響します。

重要

AWS ルートアカウントのアクセス権限を変更することはできません。同様に、ルートアカウントを使って GetFederationToken または GetSessionToken を呼び出して作成された一時的なセキュリティ認証情報のアクセス権限を変更することもできません。そのため、ルートアカウントの認証情報を使って GetFederationToken または GetSessionToken を呼び出さないことをお勧めします。

GetFederationToken または GetSessionToken を呼び出すときに認証情報を使用した IAM ユーザーに関連付けられたポリシーを変更または削除する方法については、「ポリシーの使用」を参照してください。

一時的なセキュリティ認証情報のアクセスを名前で拒否する

認証情報を作成した IAM ユーザーまたはロールのアクセス権限に影響を与えることなく、一時的なセキュリティ認証情報のアクセスを拒否することもできます。これは、リソースベースのポリシーの Principal 要素で一時的なセキュリティ認証情報の Amazon Resource Name(ARN)を指定することで実行します(一部の AWS サービスのみでリソースに基づくポリシーをサポートしています。)

フェデレーティッドユーザーのアクセスを拒否する

たとえば、認証情報を GetFederationToken の呼び出しに使用する token-app という名の IAM ユーザーがいるとします。GetFederationToken API を呼び出すと、Bob という名前のフェデレーティッドユーザーに関連付けられた一時的なセキュリティ認証情報が得られました(フェデレーティッドユーザー名は、API 呼び出しの Name パラメータから付けられます)。フェデレーションユーザーの Bob による EXAMPLE-BUCKET という S3 バケットへのアクセスを拒否するには、次のサンプルバケットポリシーを EXAMPLE-BUCKET にアタッチします。重要な注意点として、これはフェデレーティッドユーザーの Amazon S3 アクセス権限のみに影響します。フェデレーティッドユーザーに付与された他のアクセス権限は影響を受けません。

Copy
{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "arn:aws:sts::ACCOUNT-ID-WITHOUT-HYPHENS:federated-user/Bob"}, "Effect": "Deny", "Action": "s3:*", "Resource": "arn:aws:s3:::EXAMPLE-BUCKET" } }

フェデレーティッドユーザーを指定する代わりに、GetFederationToken の呼び出し時に認証情報が使用された IAM ユーザーの ARN を、バケットポリシーの Principal 要素で指定できます。その場合、前述のポリシーの Principal 要素は次のようになります。

Copy
"Principal": {"AWS": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:user/token-app"}

重要な注意点として、ポリシーで IAM ユーザー token-app の ARN を指定すると、Bob という名前のフェデレーションユーザーだけでなく、token-app によって作成されたすべてのフェデレーションユーザーのアクセスが拒否されます。

引き受けたロールユーザーのアクセスを拒否する

ロールを引き受けることで作成された一時的なセキュリティ認証情報の ARN を指定することもできます。違うのは、リソースベースのポリシーの Principal 要素で使用される構文です。たとえば、ユーザーが Accounting-Role というロールを引き受けて、Mary という RoleSessionName を指定します(RoleSessionNameAssumeRole API 呼び出しのパラメータです)。この API 呼び出しによる一時的なセキュリティ認証情報のアクセスを拒否する場合、リソースベースのポリシーの Principal 要素は次のようになります。

Copy
"Principal": {"AWS": "arn:aws:sts::ACCOUNT-ID-WITHOUT-HYPHENS:assumed-role/Accounting-Role/Mary"}

また以下の例のように、リソースベースのポリシーの Principal 要素で IAM ロールの ARN を指定することもできます。この場合、ポリシーは、Accounting-Role という名前のロールに関連付けられたすべての一時的なセキュリティ認証情報のアクセスを拒否します。

Copy
"Principal": {"AWS": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:role/Accounting-Role"}

特定の時間より前に発行した一時的なセキュリティ認証情報のアクセスを拒否する

特定の日時より前に作成された一時的なセキュリティ認証情報だけ、アクセスを拒否することができます。これは、ポリシーの Condition 要素の aws:TokenIssueTime キーの値を指定することで実行できます。ポリシーの例を以下に示します。以下の例に似たポリシーを、一時的なセキュリティ認証情報を作成した IAM ユーザーにアタッチします。このポリシーは、aws:TokenIssueTime の値が指定した日時より前である場合にのみ、すべてのアクセス権限を拒否します。aws:TokenIssueTime の値は、一時的なセキュリティ認証情報が作成された正確な時間に相当します。aws:TokenIssueTime の値は、一時的なセキュリティ認証情報を使用して署名された AWS リクエストのコンテキストでのみ存在します。したがって、ポリシーの Deny ステートメントは、IAM ユーザーの長期的な認証情報を使って署名したリクエストには影響しません。

以下のポリシーは、ロールにアタッチすることもできます。その場合、このポリシーは、指定した日時より前に、そのロールによって作成された一時的なセキュリティ認証情報のみに影響します。認証情報が指定の日時より後にロールによって作成された場合、ポリシーの Condition 要素は false と評価され、Deny ステートメントは効果を持ちません。

例 発行時間により一時的な認証情報にすべてのアクセス権限を拒否するポリシー

Copy
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": {"DateLessThan": {"aws:TokenIssueTime": "2014-05-07T23:47:00Z"}} } }

この方法でセッションが取り消された有効なユーザーは、作業を続行するには新しいセッション用の一時的な認証情報を取得する必要があります。AWS CLI は、期限切れになるまで認証情報をキャッシュすることに注意してください。有効でなくなった、キャッシュされている認証情報の削除と更新を CLI に強制するには、次のいずれかのコマンドを実行します。

Linux、MacOS、または Unix

Copy
$ rm -r ~/.aws/cli/cache

Windows

Copy
C:\> del /s /q %UserProfile%\.aws\cli\cache