

# IAM JSON ポリシー要素NotAction
<a name="reference_policies_elements_notaction"></a>

`NotAction` は、指定されたアクションリスト*以外*のすべてを明示的に照合する高度なポリシー要素です。`NotAction` を使うと、一致するアクションの長いリストではなく、いくつかの一致しないアクションのリストが含まれるため、ポリシーが短くなります。`NotAction` で指定したアクションは、ポリシーステートメントの `Allow` または `Deny` 効果の影響を受けません。これは、`Allow` 効果を使用する場合、リストされていない該当するすべてのアクションまたはサービスが許可されることを意味します。また、`Deny` 効果を使用する場合は、リストされていないそのようなアクションやサービスは定義されません。`NotAction` を `Resource` 要素と共に使用することで、ポリシーの範囲を指定します。これにより、AWS は該当するアクションまたはサービスを決定します。詳細については、次のポリシー例を参照してください。

**Allow での NotAction の使用** 

`"Effect": "Allow"` のステートメントで `NotAction` 要素を使用して、AWS サービス内で、`NotAction` で指定したアクションを除くすべてのアクションへのアクセスを許可できます。これを `Resource` 要素と共に使用してポリシーの範囲を提供し、許可されるアクションを、指定されたリソースで実行できるアクションに制限します。

次の例では、任意の S3 リソースで実行できる、バケットの削除*以外*のすべての Amazon S3 アクションにユーザーがアクセスすることを許可します。また、このポリシーでは、他のサービスのアクションも許可されません。他のサービスのアクションは S3 リソースには適用されないためです。

```
"Effect": "Allow",
"NotAction": "s3:DeleteBucket",
"Resource": "arn:aws:s3:::*",
```

多数のアクションへのアクセスを許可することが必要になる場合があります。`NotAction` 要素を使用してそのステートメントを効果的に反転させることで、アクションのリストを短くすることができます。たとえば、AWS には多数のサービスがあるため、IAM へのアクセスを除くすべてのアクションの実行をユーザーに許可するポリシーを作成することが必要になる場合があります。

以下の例では、IAM を除くすべての AWS サービスですべてのアクションへのアクセスをユーザーに許可します。

```
"Effect": "Allow",
"NotAction": "iam:*",
"Resource": "*"
```

`NotAction` 要素と `"Effect": "Allow"` をポリシー内の同じステートメントで使用したり、別のステートメントで使用したりすることに注意してください。`NotAction` は、指定したリソースに対して明示的に列挙または適用されないすべてのサービスおよびアクションと一致するため、意図した以上のアクセス許可をユーザーに付与する結果になる場合があります。

**Deny での NotAction の使用**

`NotAction` のステートメントで`"Effect": "Deny"` 要素を使用すると、`NotAction` 要素で指定されているアクションを除いて、リストされたすべてのリソースへのアクセスを拒否できます。この組み合わせでは、リストされた項目は許可されませんが、リストされていないアクションは明示的に拒否されます。許可したいアクションを許可する必要があります。

次の条件付きの例では、ユーザーが MFA の使用にサインインしていない場合、非 IAM アクションへのアクセスを拒否しています。ユーザーが MFA でサインインした場合は、`"Condition"` テストは失敗し、最終的な `"Deny"` ステートメントは無効になります。ただし、これにより、ユーザーがアクションにアクセスすることは許可されないため、IAM アクションを除くアクションはすべて明示的に拒否されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyAllUsersNotUsingMFA",
        "Effect": "Deny",
        "NotAction": "iam:*",
        "Resource": "*",
        "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
    }]
}
```

------

特定のサービスからのアクションを除き、特定のリージョン以外のアクションへのアクセスを拒否するポリシーの例については、「[AWS: リクエストされたリージョンに基づいて、AWS へのアクセスを拒否する](reference_policies_examples_aws_deny-requested-region.md)」を参照してください。