Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
AWS Éléments de politique JSON : NotPrincipal
L'NotPrincipal
élément est utilisé "Effect":"Deny"
pour refuser l'accès à tous les principaux, à l'exception du principal spécifié dans l'NotPrincipal
élément. Un principal peut être un utilisateur IAM, un utilisateur fédéré, un rôle IAM, une session de rôle assumé Compte AWS, un AWS service ou un autre type principal. Pour plus d'informations sur les directeurs, consultezAWS Éléments de politique JSON : Principal.
L'élément NotPrincipal
doit être utilisé avec "Effect":"Deny"
. Son utilisation avec "Effect":"Allow"
n'est pas prise en charge.
Important
Nous ne recommandons pas l'utilisation de NotPrincipal
pour les nouvelles politiques basées sur les ressources dans le cadre de votre stratégie de sécurité et d'autorisation. Lorsque vous utilisez l'élément NotPrincipal
, il peut être difficile de résoudre les problèmes liés à plusieurs types de politique. Nous recommandons plutôt l'utilisation de la clé de contexte aws:PrincipalArn
avec les opérateurs de condition ARN.
Points clés
-
L'
NotPrincipal
élément est pris en charge dans les politiques basées sur les ressources pour certains AWS services, notamment les points de terminaison VPC. Les politiques basées sur les ressources sont des politiques que vous intégrez directement à une ressource. Vous ne pouvez pas utiliser l'élémentNotPrincipal
dans une politique IAM basée sur l'identité ni dans une politique d'approbation du rôle IAM. -
N'utilisez pas de déclarations de politique basée sur les ressources qui incluent un élément de politique
NotPrincipal
ayant un effetDeny
sur les utilisateurs IAM ou les rôles auxquels est attachée une politique de limite des autorisations. L'élémentNotPrincipal
ayant un effetDeny
refusera toujours tout principal IAM auquel est attachée une politique de limite des autorisations, quelles que soient les valeurs spécifiées dans l'élémentNotPrincipal
. Certains utilisateurs ou rôles IAM qui auraient autrement eu accès à la ressource n'y ont donc plus accès. Nous vous recommandons de modifier vos déclarations de politique basée sur les ressources afin d'utiliser l'opérateur de condition ArnNotEquals avec la clé de contexte aws:PrincipalArn dans le but de limiter l'accès plutôt que l'élémentNotPrincipal
. Pour plus d'informations sur les limites des autorisations, veuillez consulter Limites d'autorisations pour les entités IAM. -
Lorsque vous l'utilisez
NotPrincipal
, vous devez également spécifier l'ARN du compte du principal non refusé. Dans le cas contraire, la politique peut refuser l'accès à l'ensemble du compte contenant le principal. En fonction du service que vous incluez dans votre politique, AWS peut valider d'abord le compte, puis l'utilisateur. Si un utilisateur assumant un rôle (une personne utilisant un rôle) est en cours d'évaluation, AWS vous pouvez d'abord valider le compte, puis le rôle, puis l'utilisateur assumé. Ce dernier est identifié par le nom de session de rôle qui est spécifié lorsqu'il endosse le rôle. Par conséquent, nous vous recommandons vivement d'inclure explicitement l'ARN du compte d'un utilisateur, ou inclure à la fois l'ARN d'un rôle et l'ARN du compte contenant le rôle. -
L'
NotPrincipal
élément n'est pas pris en charge dans les politiques de contrôle des services (SCP) et les politiques de contrôle des ressources (RCP).
Alternatives à l'NotPrincipal
élément
Lorsque vous gérez le contrôle d'accès dans AWS, il peut arriver que vous deviez refuser explicitement à tous les principaux l'accès à une ressource, à l'exception d'un ou de plusieurs principaux que vous spécifiez. AWS
recommande d'utiliser une instruction Deny avec des clés contextuelles de condition globales pour un contrôle plus précis et un dépannage simplifié. Les exemples suivants montrent des approches alternatives utilisant des opérateurs de condition tels que StringNotEquals
ou ArnNotEquals
pour refuser l'accès à tous les principaux, à l'exception de ceux spécifiés dans l'élément Condition.
Exemple de scénario utilisant un rôle IAM
Vous pouvez utiliser une politique basée sur les ressources avec une instruction Deny pour empêcher tous les rôles IAM, à l'exception de ceux spécifiés dans l'élément Condition, d'accéder à vos ressources ou de les manipuler. Cette approche repose sur le principe AWS de sécurité selon lequel un refus explicite a toujours priorité sur toute instruction d'autorisation et contribue à maintenir le principe du moindre privilège au sein de votre AWS infrastructure.
Au lieu de l'utiliserNotPrincipal
, nous vous recommandons d'utiliser une instruction Deny avec des clés contextuelles de condition globales et l'opérateur de condition, comme ArnNotEqualspour autoriser explicitement un rôle IAM à accéder à vos ressources. L'exemple suivant permet lois : PrincipalArn d'autoriser explicitement le rôle read-only-role
à accéder aux compartiments Amazon S3 du Bucket_Account_Audit
dossier.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCrossAuditAccess", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::
Bucket_Account_Audit
", "arn:aws:s3:::Bucket_Account_Audit
/*" ], "Condition": { "ArnNotEquals": { "aws:PrincipalArn": "arn:aws:sts::444455556666:role/read-only-role
" } } } ] }
Exemple de scénario utilisant un principal de service
Vous pouvez utiliser une instruction Deny pour empêcher tous les principaux de service, à l'exception de ceux spécifiés dans l'Condition
élément, d'accéder à vos ressources ou de les manipuler. Cette approche est particulièrement utile lorsque vous devez mettre en œuvre des contrôles d'accès précis ou établir des limites de sécurité entre les différents services et applications de votre AWS
environnement.
Au lieu de l'utiliserNotPrincipal
, nous vous recommandons d'utiliser une instruction Deny avec des clés contextuelles de condition globales et l'opérateur de condition StringNotEqualspour autoriser explicitement un principal de service à accéder à vos ressources. L'exemple suivant permet lois : PrincipalServiceName
d'autoriser explicitement le principal du AWS CodeBuild service à accéder aux compartiments Amazon S3 du BUCKETNAME
dossier.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyNotCodeBuildAccess", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::
BUCKETNAME
", "arn:aws:s3:::BUCKETNAME
/*" ], "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceName": "codebuild.amazonaws.com
" } } } ] }