Tous les produits
Search
Centre de documentation

Resource Access Management:Structure et syntaxe des politiques

Dernière mise à jour :Aug 09, 2026

Une politique Resource Access Management (RAM) est un document JSON qui définit les autorisations. Cette rubrique explique la structure d'une politique ainsi que la syntaxe de ses éléments.

Structure des politiques

Une politique RAM comporte deux éléments de premier niveau : Version et Statement.

Élément

Obligatoire

Description

Version

Oui

Version du langage de politique. La seule valeur valide est "1".

Statement

Oui

Liste d'une ou plusieurs instructions d'autorisation. Chaque instruction définit les actions autorisées ou refusées sur certaines ressources.

Chaque objet Statement contient les éléments suivants :

Élément

Obligatoire

Format

Description

Effect

Oui

"Allow" ou "Deny"

Indique si l'instruction accorde ou refuse l'accès.

Action ou NotAction

Oui

"service:ActionName" ou ["service:ActionName", ...]

Opérations API couvertes par l'instruction. Utilisez Action pour lister explicitement les opérations autorisées ou refusées. Utilisez NotAction avec "Effect": "Allow" pour accorder l'accès à tout sauf aux opérations répertoriées. Il s'agit d'un raccourci permettant de soustraire des éléments d'un joker (*). NotAction n'est pas équivalent à "Effect": "Deny" : le refus bloque l'accès même si une autre instruction l'accorde, tandis que NotAction restreint la portée de l'effet.

Resource

Oui

"resource_arn" ou ["resource_arn", ...]

Ressources auxquelles s'applique l'instruction. Utilisez "*" pour cibler toutes les ressources.

Condition

Non

{ "Operator": { "ConditionKey": "ConditionValue" } }

Restrictions à satisfaire pour que l'instruction prenne effet.

image

L'exemple suivant illustre la structure de base d'une politique comportant une seule instruction :

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "service:ActionName",
            "Resource": "resource_arn",
            "Condition": {
                "Operator": {
                    "ConditionKey": "ConditionValue"
                }
            }
        }
    ]
}

Règles de syntaxe générales

  • Format JSON : Les politiques doivent être au format JSON valide. Les noms d'éléments (tels que Effect), les opérateurs et les valeurs prédéfinies sont sensibles à la casse et doivent être entourés de guillemets doubles (").

  • Valeur unique ou tableau : Les éléments acceptant plusieurs valeurs, tels que Action et Resource, peuvent être une chaîne unique ou un tableau de chaînes. Les deux formats suivants sont valides :

    "Action": "ecs:DescribeInstances"
    
    "Action": [
        "ecs:DescribeInstances",
        "ecs:StopInstance"
    ]
  • Jokers : Utilisez des jokers dans les valeurs Action et Resource pour cibler plusieurs éléments :

    • Un astérisque (*) correspond à zéro ou plusieurs caractères. Par exemple, ecs:Describe* correspond à toutes les actions ECS commençant par Describe.

    • Un point d'interrogation (?) correspond à n'importe quel caractère unique.

Définition formelle de la syntaxe

La grammaire suivante, de style Backus-Naur (BNF), fournit une définition formelle du langage de politique.

Conventions de notation

Symbole

Signification

< >

Règle grammaticale (non terminal). Remplacée par la définition de la règle.

=

Définit une règle grammaticale.

( )

Regroupe des alternatives.

`

`

Sépare les alternatives — choisissez-en une.

[ ]

Tableau (liste JSON). Non optionnel.

? après un élément

L'élément est facultatif.

" "

Chaîne littérale apparaissant telle quelle dans la politique.

policy  = {
     <version_block>,
     <statement_block>
}
<version_block> = "Version" : ("1")
<statement_block> = "Statement" : [ <statement>, <statement>, ... ]
<statement> = { 
    <effect_block>,
    <action_block>,
    <resource_block>,
    <condition_block?>
}
<effect_block> = "Effect" : ("Allow" | "Deny")  
<action_block> = "Action" | "NotAction" : 
    ("*" | <action_string> | [<action_string>, <action_string>, ...])
<resource_block> = "Resource" : 
    ("*" | <resource_string> | [<resource_string>, <resource_string>, ...])
<condition_block> = "Condition" : <condition_map>
<condition_map> = {
  <condition_type_string> : { 
      <condition_key_string> : <condition_value_list>,
      <condition_key_string> : <condition_value_list>,
      ...
  },
  <condition_type_string> : {
      <condition_key_string> : <condition_value_list>,
      <condition_key_string> : <condition_value_list>,
      ...
  }, ...
}  
<condition_value_list> = (<condition_value> | [<condition_value>, <condition_value>, ...])
<condition_value> = ("String" | "Number" | "Boolean" | "Date and time" | "IP address")

Références