Syntaxe du langage de politique JSON IAM - AWS Identity and Access Management

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.

Syntaxe du langage de politique JSON IAM

Cette page présente la syntaxe formelle du langage de stratégie utilisé pour créer des politiques JSON dans IAM. Nous vous la présentons pour vous permettre de mieux comprendre comment créer et valider des politiques.

Pour consulter des exemples de politiques, reportez-vous aux rubriques suivantes :

Pour obtenir des exemples de politiques utilisées dans d'autres AWS services, consultez la documentation de ces services.

Langage de politique et JSON

Les politiques sont créées à l'aide du format JSON. Lorsque vous créez ou modifiez une politique JSON, IAM peut effectuer une validation de politique pour vous aider à créer une politique efficace. IAM identifie les erreurs de syntaxe JSON, tandis que IAM Access Analyzer fournit des vérifications de politique supplémentaires avec des recommandations pour vous aider à affiner vos politiques. Pour en savoir plus sur la validation de politiques, veuillez consulter Validation de politiques IAM. Pour en savoir plus sur les vérifications des politiques IAM Access Analyzer et les recommandations exploitables, veuillez consulter Validation de politique IAM Access Analyzer.

Ce document n'entend pas fournir une description complète de ce qui constitue un code JSON valide. Toutefois, voici quelques règles de base applicables à JSON :

  • Les espaces entre des entités individuelles sont autorisés.

  • Les valeurs sont entourées de guillemets. Les guillemets sont facultatifs pour les valeurs numériques et booléennes.

  • De nombreux éléments (par exemple, action_string_list et resource_string_list) acceptent une valeur composée d'un tableau JSON. Les tableaux peuvent inclure une ou plusieurs valeurs. Lorsqu'un tableau comporte plusieurs valeurs, il est entouré de crochets ([ et ]) et les valeurs sont séparées par une virgule, comme dans l'exemple suivant :

    "Action" : ["ec2:Describe*","ec2:List*"]

  • Les types de données JSON de base (booléen, nombre et chaîne) sont définis dans RFC 7159.

Conventions utilisées dans cette syntaxe

Les conventions suivantes sont utilisées dans cette syntaxe :

  • Les caractères suivants sont des jetons JSON et sont inclus dans les politiques :

    { } [ ] " , :

  • Les caractères suivants sont des caractères spéciaux dans la syntaxe et ne sont pas inclus dans les politiques :

    = < > ( ) |

  • Si un élément autorise plusieurs valeurs, ceci est indiqué à l'aide de valeurs répétées, d'une virgule de délimitation et de points de suspension (...). Exemples :

    [<action_string>, <action_string>, ...]

    <principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }

    Si plusieurs valeurs sont autorisées, il est également possible d'en inclure une seule. Lors de l'utilisation d'une seule valeur, la virgule de fin doit être omise. Si l'élément accepte un tableau (entouré de [ et ]) mais que vous n'utilisez qu'une valeur, les crochets sont facultatifs. Exemples :

    "Action": [<action_string>]

    "Action": <action_string>

  • Un point d'interrogation (?) placé après un élément indique que cet élément est facultatif. Exemple :

    <version_block?>

    Toutefois, reportez-vous aux notes relatives à la syntaxe ci-après pour plus de détails sur les éléments facultatifs.

  • Une ligne verticale (|) entre des éléments indique plusieurs choix. Dans la syntaxe, les parenthèses définissent la portée de ces choix. Exemple :

    ("Principal" | "NotPrincipal")

  • Les éléments qui doivent être des chaînes littérales sont entourés de guillemets doubles ("). Exemple :

    <version_block> = "Version" : ("2008-10-17" | "2012-10-17")

Pour des informations complémentaires, reportez-vous à la section Remarques sur la syntaxe de politique après la description de la syntaxe.

Syntaxe

La liste suivante décrit la syntaxe du langage de politique. Pour plus d'informations sur les conventions utilisées dans la liste, reportez-vous à la section précédente. Pour des informations complémentaires, reportez-vous aux notes ci-après.

Note

Cette syntaxe décrit des politiques marquées avec une version 2008-10-17 et 2012-10-17. Un élément de politique Version varie d'une version de politique. L'élément de politique Version est utilisé dans une politique pour définir la version de la langue de la politique. En revanche, une version de politique est créée lorsque vous apportez des modifications à une politique gérée par le client dans IAM. La politique modifiée ne remplace pas la politique existante. À la place, IAM crée une nouvelle version de la politique gérée. Pour en savoir plus sur l'élément de politique Version, consultez Éléments de politique JSON IAM : Version. Pour en savoir plus sur les versions de politiques, consultez Gestion des versions des politiques IAM.

policy = { <version_block?> <id_block?> <statement_block> } <version_block> = "Version" : ("2008-10-17" | "2012-10-17") <id_block> = "Id" : <policy_id_string> <statement_block> = "Statement" : [ <statement>, <statement>, ... ] <statement> = { <sid_block?>, <principal_block?>, <effect_block>, <action_block>, <resource_block>, <condition_block?> } <sid_block> = "Sid" : <sid_string> <effect_block> = "Effect" : ("Allow" | "Deny") <principal_block> = ("Principal" | "NotPrincipal") : ("*" | <principal_map>) <principal_map> = { <principal_map_entry>, <principal_map_entry>, ... } <principal_map_entry> = ("AWS" | "Federated" | "Service" | "CanonicalUser") : [<principal_id_string>, <principal_id_string>, ...] <action_block> = ("Action" | "NotAction") : ("*" | [<action_string>, <action_string>, ...]) <resource_block> = ("Resource" | "NotResource") : : ("*" | <resource_string> | [<resource_string>, <resource_string>, ...]) <condition_block> = "Condition" : { <condition_map> } <condition_map> = { <condition_type_string> : { <condition_key_string> : <condition_value_list> }, <condition_type_string> : { <condition_key_string> : <condition_value_list> }, ... } <condition_value_list> = [<condition_value>, <condition_value>, ...] <condition_value> = (<condition_value_string> | <condition_value_string> | <condition_value_string>)

Remarques sur la syntaxe de politique

  • Une politique peut contenir un tableau de instructions.

  • La taille maximale des politiques est comprise entre 2 048 et 10 240 caractères, selon l'entité à laquelle la politique est attachée. Pour plus d’informations, veuillez consulter Quotas IAM et AWS STS. Lors du calcul de la taille de la politique, les espaces ne sont pas inclus.

  • Des éléments individuels ne doivent pas contenir plusieurs instances de la même clé. Par exemple, vous ne pouvez pas inclure le bloc Effect à deux reprises dans la même instruction.

  • Les blocs peuvent être insérés dans n'importe quel ordre. Par exemple, version_block peut suivre id_block dans une politique. De la même façon effect_block, principal_block et action_block peuvent figurer dans n'importe quel ordre dans une instruction.

  • L'élément id_block est facultatif dans les politiques basées sur les ressources. Il ne doit pas être inclus dans les stratégies basées sur une identité.

  • L'élément principal_block est obligatoire dans les politiques basées sur les ressources (par exemple, dans les politiques de compartiment Amazon S3) et dans les politiques d'approbation de rôles IAM. Il ne doit pas être inclus dans les stratégies basées sur une identité.

  • L'élément principal_map des politiques de compartiment Amazon S3 peut inclure l'ID CanonicalUser. La plupart des politiques basées sur les ressources ne prennent pas en charge ce mappage. Pour en savoir plus sur l'utilisation de l'ID d'utilisateur canonique dans une politique de compartiment, veuillez consulter spécification d'un principal dans une politique dans le guide de l'utilisateur service de stockage simple Amazon.

  • Chaque valeur de chaîne (policy_id_string, sid_string, principal_id_string, action_string, resource_string, condition_type_string, condition_key_string et la version de chaîne de condition_value) peut avoir ses propres limites de longueur minimale et maximale, des valeurs autorisées spécifiques ou un format interne obligatoire.

Remarques à propos de valeurs de chaîne

Cette section contient des informations complémentaires sur les valeurs de chaîne utilisées dans les différents éléments d'une politique.

action_string

Comporte un espace de noms de service, deux points et le nom d'une action. Un nom d'action peut inclure des caractères génériques. Exemples :

"Action":"ec2:StartInstances" "Action":[ "ec2:StartInstances", "ec2:StopInstances" ] "Action":"cloudformation:*" "Action":"*" "Action":[ "s3:Get*", "s3:List*" ]
policy_id_string

Permet d'inclure des informations globales sur la politique. Certains services tels qu'Amazon SQS et Amazon SNS utilisent l'élément Id en tant qu'élément réservé. Si aucune restriction n'est imposée par un service individuel, policy_id_string peut inclure des espaces. Certains services exigent que cette valeur soit unique dans un compte AWS .

Note

L'élément id_block est autorisé dans les politiques basées sur les ressources, mais pas dans celles basées sur une identité.

La longueur n'est pas limitée, mais cette chaîne contribue à la longueur totale de la politique, qui elle est limitée.

"Id":"Admin_Policy" "Id":"cd3ad3d9-2776-4ef1-a904-4c229d1642ee"
sid_string

Permet d'inclure des informations relatives à une instruction individuelle. Pour les politiques IAM, les caractères alphanumériques de base (A-Z, a-z, 0-9) sont les seuls autorisés dans la valeur Sid. Les autres services AWS prenant en charge les politiques de ressources peuvent imposer d'autres exigences pour la valeur Sid. Par exemple, certains services exigent que cette valeur soit unique au sein d'un Compte AWS, et certains services autorisent des caractères supplémentaires tels que des espaces dans la Sid valeur.

"Sid":"1" "Sid": "ThisStatementProvidesPermissionsForConsoleAccess"
principal_id_string

Permet de spécifier un principal à l'aide du nom de ressource Amazon (ARN) de l'utilisateur IAM Compte AWS, du rôle IAM, de l'utilisateur fédéré ou de l'utilisateur assumant le rôle. Pour an Compte AWS, vous pouvez également utiliser la forme abrégée AWS:accountnumber au lieu de l'ARN complet. Pour toutes les options, notamment les services AWS ;, les rôles endossés et ainsi de suite, consultez Spécification d'un principal.

Notez que vous pouvez utiliser * uniquement pour spécifier « tout le monde/anonyme ». Vous ne pouvez pas l'utiliser pour spécifier une partie de nom ou d'ARN.

resource_string

Dans la plupart des cas, la valeur est composée d'un Amazon Resource Name (ARN).

"Resource":"arn:aws:iam::123456789012:user/Bob" "Resource":"arn:aws:s3:::examplebucket/*"
condition_type_string

Identifie le type de condition testé, par exemple StringEquals, StringLike, NumericLessThan, DateGreaterThanEquals, Bool, BinaryEquals, IpAddress, ArnEquals, etc. Pour obtenir la liste complète des types de conditions, consultez Éléments de politique JSON IAM : Opérateurs de condition.

"Condition": { "NumericLessThanEquals": { "s3:max-keys": "10" } } "Condition": { "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringEquals": { "s3:x-amz-server-side-encryption": "AES256" } }
condition_key_string

Identifie la clé de condition dont la valeur sera testée pour déterminer si la condition est remplie. AWS définit un ensemble de clés de condition disponibles dans tous les AWS services, y compris aws:PrincipalTypeaws:SecureTransport, etaws:userid.

Pour obtenir la liste des clés de AWS condition, voirAWS clés contextuelles de condition globale. Pour connaître les clés de condition spécifiques à un service, reportez-vous à la documentation relative au service, notamment :

"Condition":{ "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } }
condition_value_string

Identifie la valeur de la chaîne condition_key_string qui détermine si la condition est remplie. Pour obtenir la liste complète des valeurs valides pour un type de condition, consultez Éléments de politique JSON IAM : Opérateurs de condition.

"Condition":{ "ForAnyValue:StringEquals": { "dynamodb:Attributes": [ "ID", "PostDateTime" ] } }