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 |
|
|
Oui |
Version du langage de politique. La seule valeur valide est |
|
|
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 |
|
|
Oui |
|
Indique si l'instruction accorde ou refuse l'accès. |
|
|
Oui |
|
Opérations API couvertes par l'instruction. Utilisez |
|
|
Oui |
|
Ressources auxquelles s'applique l'instruction. Utilisez |
|
|
Non |
|
Restrictions à satisfaire pour que l'instruction prenne effet. |
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
ActionetResource, 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
ActionetResourcepour 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 parDescribe.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. |
|
|
|
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")