

# 一時的なセキュリティ認証情報のアクセス権限を無効にする
<a name="id_credentials_temp_control-access_disable-perms"></a>

一時的なセキュリティ認証情報は、期限が切れるまで有効です。これらの認証情報は、900 秒 (15 分) から最大 129,600 秒 (36 時間) までの指定された期間有効です。デフォルトのセッション時間は 43,200 秒 (12 時間) です。これらの認証情報は取り消すことができますが、認証情報を漏洩させて悪意あるアカウントの活動に利用されないようにIAM ユーザーまたはロールのアクセス許可を変更する方法もあります。一時的なセキュリティ認証情報に割り当てられるアクセス許可は、AWS のリクエストの実行に使用されるたびに評価されます。認証情報からすべてのアクセス許可を削除すると、それらを使用している AWS のリクエストは失敗します。

ポリシーの更新が有効になるまでには、数分かかる場合があります。IAM ロール セッションの場合、ロールの一時的なセキュリティ認証情報を取り消し、ロールを引き受けるすべてのユーザーに新しい認証情報の再認証およびリクエストを強制します。詳細については、「[IAM ロールの一時的なセキュリティ認証情報を取り消す](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)」を参照してください。

AWS アカウントのルートユーザー のアクセス許可を変更することはできません。同様に、ルートユーザーとしてサインインしているときに `GetFederationToken` または `GetSessionToken` を呼び出して作成した一時的セキュリティ認証情報のアクセス許可を変更することはできません。そのため、ルートユーザーとして `GetFederationToken` または `GetSessionToken` を呼び出さないようお勧めします。

IAM ユーザーのアクセス許可を変更する手順については、「[IAM ユーザーのアクセス許可を変更する](id_users_change-permissions.md)」を参照してください。

IAM ロールのアクセス許可を変更する手順については、「[ロールに対するアクセス許可を更新する](id_roles_update-role-permissions.md)」を参照してください。

**重要**  
IAM アイデンティティセンターのアクセス許可セットから作成された IAM のロールを編集することはできません。IAM アイデンティティセンターでユーザーのアクティブなアクセス許可セットセッションを取り消す必要があります。詳細については、「IAM Identity Center ユーザーガイド」の「[Revoke active IAM role sessions created by permission sets](https://docs.aws.amazon.com/singlesignon/latest/userguide/useraccess.html#revoke-user-permissions)」を参照してください。

**Topics**
+ [ロールに関連するすべてのIAM ロールセッションに対するアクセスを拒否する](#deny-access-to-all-sessions)
+ [IAM ロールセッションへのアクセスを拒否する](#deny-access-to-specific-session)
+ [条件コンテキストキーを使用した一時的なセキュリティ認証情報セッションへのアクセスを拒否する](#deny-access-to-specific-session-condition-key)
+ [リソースベースのポリシーを使用して特定のプリンシパルへのアクセスを拒否する](#deny-access-with-resource-based)

## ロールに関連するすべてのIAM ロールセッションに対するアクセスを拒否する
<a name="deny-access-to-all-sessions"></a>

この手順は、ロールに関連付けられた**すべての** IAM ロールセッションに対するアクセス許可を拒否します。次のような不審なアクセスが懸念される場合は、この方法を使用します。


+ クロスアカウントアクセスを使用している別のアカウントのプリンシパル
+ アカウント内の AWS リソースへのアクセス許可を持つ外部ユーザー ID
+ OIDC プロバイダーを使用して、モバイルまたはウェブアプリケーションで認証されているユーザー

`AssumeRole`、`AssumeRoleWithSAML`、または `AssumeRoleWithWebIdentity`、`GetFederationToken`、または `GetSessionToken` を呼び出して取得した一時的なセキュリティ認証情報に割り当てたアクセス許可を変更または削除するには、ロールのアクセス許可を定義する ID ベースのポリシーを編集または削除します。

**重要**  
また、プリンシパルのアクセスを許可するリソースベースのポリシーがある場合、そのリソースに対する明示的な拒否を追加する必要があります。詳細については、「[リソースベースのポリシーを使用して特定のプリンシパルへのアクセスを拒否する](#deny-access-with-resource-based)」を参照してください。

**ロールに関連する**すべて**の IAM ロールセッションへのアクセスを拒否する**

1. AWS マネジメントコンソール にサインインし、IAM コンソール を開きます。

1. ナビゲーションペインで **[ロール]** を選択します。

1. 編集するロールの名前を選択します。検索ボックスを使用してリストをフィルタリングします。

1. **[アクセス許可]** タブを選択します。

1. 編集する関連ポリシーを選択します。カスタマー管理ポリシーを編集する前に、**[エンティティアタッチ]** タブを確認して、同じポリシーがアタッチされている可能性のある他のアイデンティティへのアクセスを中断しないようにします。

1. **[JSON]** タブを選択してポリシーを更新し、すべてのリソースとアクションを拒否します。
**注記**  
これらのアクセス許可は、AWS 管理ポリシー [AWSDenyAll](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSDenyAll.html) のアクセス許可と同じです。この AWS 管理ポリシーは、すべてのアクセスを拒否する IAM ユーザーまたはロールにアタッチできます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "DenyAll",
               "Effect": "Deny",
               "Action": [
                   "*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. **[確認]** ページで、ポリシーの **[概要]** を確認してから、**[変更の保存]** を選択して作業を保存します。

ロールのポリシーを更新すると、変更内容はそのロールに関連付けられているすべての一時的なセキュリティ認証情報のアクセス許可に影響します。これには、ロールのアクセス許可ポリシーを変更する前に発行された認証情報も含まれます。

ポリシーを更新すると、[ロールの一時的なセキュリティ認証情報を取り消し](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)、ロールが発行した認証情報に対するすべてのアクセス許可をすぐに取り消すことができます。

## IAM ロールセッションへのアクセスを拒否する
<a name="deny-access-to-specific-session"></a>

IAM ロールをすべて拒否ポリシーで更新したり、ロールを完全に削除したりすると、そのロールにアクセスできるすべてのユーザーのアクセスが中断されます。ロールに関連付けられている他のすべてのセッションのアクセス許可に影響を与えずに、アクセスを拒否できます。

`Principal` は、[条件コンテキストキー](#deny-access-to-specific-session-condition-key)または[リソースベースのポリシー](#deny-access-with-resource-based)を使用してアクセス許可を拒否できます。

**ヒント**  
AWS CloudTrail ログを使用して、フェデレーションユーザーの ARN を確認できます。詳細については、「[AWS CloudTrail を使用してフェデレーションユーザーを簡単に識別する方法](https://aws.amazon.com/blogs/security/how-to-easily-identify-your-federated-users-by-using-aws-cloudtrail/)」を参照してください。

## 条件コンテキストキーを使用した一時的なセキュリティ認証情報セッションへのアクセスを拒否する
<a name="deny-access-to-specific-session-condition-key"></a>

認証情報を作成した IAM ユーザーまたはロールのアクセス許可に影響を与えることなく、特定の一時的なセキュリティ認証情報へのアクセスを拒否したい場合は、アイデンティティベースのポリシーで条件コンテキスト キーを使用できます。IAM ロールの場合、ポリシーの更新後は、[ロールの一時的なセキュリティ認証情報を取り消し](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)、すべての発行された認証情報をすぐに取り消すこともできます。

条件コンテキストキーの詳細については、「[AWS グローバル条件コンテキストキー](reference_policies_condition-keys.md)」を参照してください。

### aws:PrincipalArn
<a name="deny-access-condition-key-principalarn"></a>

ID ベースのポリシーで条件コンテキストキー [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) を使用して、Amazon リソースネーム (ARN) による特定のプリンシパルへのアクセスを拒否できます。これを行うには、ポリシーの Condition 要素で、一時的なセキュリティ認証情報が関連付けられている IAM ユーザー、ロール、または AWS STS フェデレーションユーザーセッションの ARN を指定します。

**ARN による特定のプリンシパルへのアクセスを拒否するには**

1. IAM コンソールのナビゲーションペインで、**[ユーザー]** または**[ロール]** を選択します。

1. 編集する IAM ユーザーまたはロールの名前を選択します。検索ボックスを使用してリストをフィルタリングします。

1. **[アクセス許可]** タブを選択します。

1. 編集する関連ポリシーを選択します。カスタマー管理ポリシーを編集する前に、**[エンティティアタッチ]** タブを確認して、同じポリシーがアタッチされている可能性のある他のアイデンティティへのアクセスを中断しないようにします。

1. **[JSON]** タブを選択し、次の例に示すようにプリンシパル ARN の拒否ステートメントを追加します。

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Action": "*",
         "Resource": "*",
         "Condition": {
           "ArnEquals": {
             "aws:PrincipalArn": [
               "arn:aws:iam::{{222222222222}}:role/{{ROLENAME}}",
               "arn:aws:iam::{{222222222222}}:user/{{USERNAME}}",
               "arn:aws:iam::{{222222222222}}:federated-user/{{USERNAME}}" 
             ]
           }
         }
       }
     ]
   }
   ```

------

1. **[確認]** ページで、ポリシーの **[概要]** を確認してから、**[変更の保存]** を選択して作業を保存します。

### aws:SourceIdentity
<a name="deny-access-condition-key-sourceidentity"></a>

ID ベースのポリシーで条件コンテキストキー [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) を使用すると、IAM ロールセッションに関連付けられている特定のソース ID へのアクセスを拒否できます。これは、プリンシパルが任意の AWS STS `assume-role`\* CLI コマンドまたは AWS STS `AssumeRole`\* API オペレーションを使用してロールを引き受けるときに、`SourceIdentity` リクエストパラメータを設定することでロールセッションを発行したのであれば、必ず適用されます。このためには、一時的なセキュリティ認証情報が関連付けられているソース ID をポリシーの `Condition` 要素に指定します。

コンテキストキー [sts:RoleSessionName](reference_policies_iam-condition-keys.md#ck_rolesessionname) とは異なり、ソース ID を設定した後は、値を変更できません。`aws:SourceIdentity` キーは、ロールが実行するすべてのアクションのリクエストコンテキストに存在します。セッション認証情報を使用して別のロールを引き受けた場合、ソース ID は後続のロールセッションに引き継がれます。別のロールからあるロールを引き受けると、[ロールの連鎖](id_roles.md#iam-term-role-chaining)と呼ばれます。

次のポリシーは、条件コンテキストキー `aws:SourceIdentity` を使用して一時的なセキュリティ認証情報のセッションへのアクセスを拒否する方法の例を示しています。ロールセッションに関連付けられたソース ID を指定した場合、認証情報を作成したロールのアクセス許可に影響を与えることなく、その指定されたソース ID に関連付けられたロールセッションが拒否されます。この例の場合、ロールセッションの発行時にプリンシパルによって設定されたソース ID は `nikki_wolf@example.com` です。ポリシーの Condition にソース ID が含まれ、ポリシーの Effect が `Deny` に設定されているため、`nikki_wolf@example.com` ソース ID とのロールセッションで行われるリクエストは拒否されます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": [
            "{{nikki_wolf@example.com}}",
            "{{<source identity value>}}"
          ]
        }
      }
    }
  ]
}
```

------

### aws:userid
<a name="deny-access-condition-key-userid"></a>

ID ベースのポリシーで条件コンテキストキー [aws:userid](reference_policies_condition-keys.md#condition-keys-userid) を使用して、IAM ユーザーまたはロールに関連する一時的なセキュリティ認証情報のすべてまたは特定のセッションへのアクセスを拒否できます。これを行うには、一時的なセキュリティ認証情報がポリシーの `Condition` 要素に関連付けられている IAM ユーザー、ロール、または AWS STS フェデレーションユーザーの一意の識別子 (ID) を指定します。

次のポリシーは、条件コンテキストキー `aws:userid` を使用して一時的なセキュリティ認証情報のセッションへのアクセスを拒否する方法の例を示しています。
+ `AIDAXUSER1` は、IAM ユーザー用の一意の ID を表します。コンテキストキー `aws:userid` の値として IAM ユーザーの一意の ID を指定すると、IAM ユーザーへのアクセスが拒否されます。これには、 `GetSessionToken` API を呼び出して作成された一時的なセキュリティ認証情報セッションが含まれます。
+ `AROAXROLE1:*` は、IAM ロールに関連付けられたすべてのセッションの一意の ID を表します。コンテキストキー `aws:userid` の値として、caller-specified-role-session-name の部分に IAM ロールの一意の ID とワイルドカード (\*) 文字を指定すると、ロールに関連付けられたすべてのセッションが拒否されます。
+ `AROAXROLE2:<caller-specified-role-session-name>` は、assumed-role セッション用の一意の ID を表します。assumed-role の一意の ID の caller-specified-role-session-name の部分で、ロールのセッション名を指定するか、StringLike 条件演算子を使用する場合はワイルドカード文字を指定できます。ロールのセッション名を指定すると、認証情報を作成したロールのアクセス許可に影響を与えずに、指定されたロールのセッションが拒否されます。ロールのセッション名にワイルドカード文字を指定すると、そのロールに関連するすべてのセッションが拒否されます。
**注記**  
呼び出し側で指定したロールセッション名 (引き受けたロールセッションの一意の識別子の一部) は、ロールの連鎖の際に変更できます。ロールの連鎖は、あるロールが別のロールを引き受けると発生します。ロールセッション名は、プリンシパルが AWS STS `AssumeRole` API オペレーションを使用してロールを引き受けるときに、`RoleSessionName` リクエストパラメータを使用して設定します。
+ `account-id:<federated-user-caller-specified-name>` は、AWS STS フェデレーションユーザーのセッション用の一意の ID を表します。IAM ユーザーは `GetFederationToken` API を呼び出してこのセッションを作成します。AWS STS フェデレーションユーザーのセッションに一意の ID を指定すると、認証情報を作成した IAM ユーザーのアクセス許可に影響を与えることなく、指名されたフェデレーティッドセッションが拒否されます。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:userId": [
            "{{AIDAXUSER1}}",
            "{{AROAXROLE1}}:{{*}}",
            "{{AROAXROLE2}}:<{{caller-specified-role-session-name}}>",
            "{{123456789012}}:<{{federated-user-caller-specified-name}}>"
          ]
        }
      }
    }
  ]
}
```

------

プリンシパルキーの値の具体的な例については、「[プリンシパルキーの値](reference_policies_variables.md#principaltable)」を参照してください。IAM 一意の ID とその取得方法については、「[一意の識別子](reference_identifiers.md#identifiers-unique-ids)」を参照してください。

## リソースベースのポリシーを使用して特定のプリンシパルへのアクセスを拒否する
<a name="deny-access-with-resource-based"></a>

リソースベースのポリシーを使用して特定のプリンシパルへのアクセスを制限するには、 `Condition` 要素で条件コンテキストキー [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) または [aws:SourceIdentity](reference_policies_condition-keys.md#condition-keys-sourceidentity) を使用できます。リソースベースのポリシーは、リソースにアタッチされたアクセス許可ポリシーであり、リソースにアクセスできるユーザーとそのリソースに対して実行できるアクションを制御します。

`aws:PrincipalARN` コンテキストキーを使用する場合は、ポリシーの Condition 要素で一時的なセキュリティ認証情報に関連付けられた IAM ユーザー、ロール、または AWS STS フェデレーティッドユーザーセッションの ARN を指定します。次のポリシー例は、リソースベースのポリシーで `aws:PrincipalARN` コンテキストキーを使用する方法を示しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "{{s3:*}}",
    "Resource": "arn:aws:{{s3}}:::{{amzn-s3-demo-bucket}}",
    "Condition": {
      "ArnEquals": {
        "aws:PrincipalArn": [
          "arn:aws:iam::{{222222222222}}:role/{{ROLENAME}}",
          "arn:aws:iam::{{222222222222}}:user/{{USERNAME}}",
          "arn:aws:sts::{{222222222222}}:federated-user/{{USERNAME}}"
        ]
      }
    }
  }
}
```

------

`aws:SourceIdentity` コンテキストキーを使用する場合は、ポリシーの `Condition` 要素でロールの一時的なセキュリティ認証情報に関連付けられたソース ID 値を指定します。これは、プリンシパルが任意の AWS STS `assume-role`\* CLI コマンドまたは AWS STS `AssumeRole`\* API オペレーションを使用してロールを引き受けるときに、`SourceIdentity` リクエストパラメータを設定することでロールセッションを発行したのであれば、必ず適用されます。次の例は、リソースベースのポリシーで `aws:SourceIdentity` コンテキストキーを使用する方法を示しています。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Principal": "*",
    "Effect": "Deny",
    "Action": "{{s3:*}}",
    "Resource": "arn:aws:{{s3}}:::{{amzn-s3-demo-bucket}}",
    "Condition": {
      "StringLike": {
        "aws:SourceIdentity": [
          "{{nikki_wolf@example.com}}",
          "{{<source identity value>}}"
        ]
      }
    }
  }
}
```

------

プリンシパルの ID ベースのポリシーのみを更新しても、リソースベースのポリシーで許可されるアクションを実行できます。ただし、これらのアクションが ID ベースのポリシーで明示的に拒否されている場合を除きます。

**リソースベースのポリシーで特定のプリンシパルへのアクセスを拒否するには**

1. サービスがリソースベースのポリシーをサポートしているかどうかについては、「[IAM と連携する AWS のサービス](reference_aws-services-that-work-with-iam.md)」を確認してください。

1. AWS マネジメントコンソール にサインインして、サービスのコンソールを開きます。ポリシーをアタッチするコンソール内の場所は、サービスごとに異なります。

1. リソースベースのポリシーを編集します。拒否ポリシー ステートメントを追加して、認証情報の識別する情報を指定します。

   1. `Principal` 要素にワイルドカード (\*) を入力します。プリンシパルは `Condition` 要素で制限されます。

   1. `Effect` 要素に「Deny」と入力します。

   1. `Action` に、サービスの名前空間と拒否するアクションの名前を入力します。すべてのアクションを拒否するには、ワイルドカード (\*) 文字を使用します。例: `"s3:*"`。

   1. `Resource` 要素に、ターゲットリソースの ARN を入力します。例: `"arn:aws:s3:::amzn-s3-demo-bucket"`。

   1. `Condition` 要素で、 `aws:PrincipalARN` または `aws:SourceIdentity` コンテキストキーを指定します。

      `aws:PrincipalARN` コンテキストキーを使用する場合は、アクセスを拒否するプリンシパルの ARN を入力します。

      `aws:SourceIdentity` コンテキストキーを使用する場合は、ロールセッションで設定されたソース ID 値を入力してアクセスを拒否します。

1. 作業内容を保存します。