AWS Identity and Access Management
ユーザーガイド

IAM JSON ポリシーの要素:NotAction

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

Allow での NotAction の使用

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

以下の例では、任意の S3 リソースに対するバケットの削除以外のすべての Amazon S3 アクションへのアクセスをユーザーに許可します。これにより、ListAllMyBuckets S3 API オペレーションの使用はユーザーに許可されません。そのアクションでは "*" リソースが必要であるためです。また、このポリシーでは、他のサービスのアクションも許可されません。他のサービスのアクションは 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 アクションを除くアクションはすべて明示的に拒否されます。

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

次のポリシーの例では、リストにあるサービスのアクションを除き、eu-central-1 および eu-west-1 リージョン以外のオペレーションへのアクセスを拒否します。NotActions 要素に列挙されているサービスは、1 つのエンドポイントが物理的に us-east-1 リージョンに配置されている AWS グローバルサービスに含まれます。それ以外の場合、これらのサービスのオペレーションは失敗します。このポリシーでは、アクセスは拒否されるため、別のポリシーでアクセス許可を付与する必要があります。ポリシーの例を表示するには、「」を参照してください。