Uma política do Resource Access Management (RAM) é um documento JSON que define permissões. Este tópico explica a estrutura da política e a sintaxe de seus elementos.
Estrutura da política
Uma política do RAM tem dois elementos de nível superior: Version e Statement.
|
Elemento |
Obrigatório |
Descrição |
|
|
Sim |
Versão da linguagem de política. O único valor válido é |
|
|
Sim |
Lista com uma ou mais declarações de permissão. Cada declaração define as ações permitidas ou negadas nos respectivos recursos. |
Cada objeto Statement contém os seguintes elementos:
|
Elemento |
Obrigatório |
Formato |
Descrição |
|
|
Sim |
|
Indica se a declaração concede ou nega acesso. |
|
|
Sim |
|
Operações de API abrangidas pela declaração. Use |
|
|
Sim |
|
Recursos aos quais a declaração se aplica. Use |
|
|
Não |
|
Restrições necessárias para que a declaração tenha efeito. |
O exemplo a seguir mostra a estrutura básica de uma política com uma única declaração:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "service:ActionName",
"Resource": "resource_arn",
"Condition": {
"Operator": {
"ConditionKey": "ConditionValue"
}
}
}
]
}
Regras gerais de sintaxe
Formato JSON: As políticas devem estar em JSON válido. Nomes de elementos (como
Effect), operadores e valores predefinidos diferenciam maiúsculas de minúsculas e devem estar entre aspas duplas (").-
Valor único ou array: Elementos que aceitam múltiplos valores, como
ActioneResource, podem ser uma única string ou um array de strings. Ambas as formas abaixo são válidas:"Action": "ecs:DescribeInstances" "Action": [ "ecs:DescribeInstances", "ecs:StopInstance" ] -
Curingas: Utilize curingas nos valores de
ActioneResourcepara corresponder a vários alvos:O asterisco (
*) corresponde a zero ou mais caracteres. Por exemplo,ecs:Describe*corresponde a todas as ações do ECS que começam comDescribe.O ponto de interrogação (
?) corresponde a qualquer caractere único.
Definição formal da sintaxe
A gramática a seguir, no estilo Backus-Naur Form (BNF), fornece a definição formal da linguagem de política.
Convenções de notação
|
Símbolo |
Significado |
|
|
|
Regra gramatical (não terminal). Substituída pela definição da regra. |
|
|
|
Define uma regra gramatical. |
|
|
|
Agrupa alternativas. |
|
|
|
` |
Separa alternativas. Escolha uma. |
|
|
Array (lista JSON). Não é opcional. |
|
|
|
Indica que o elemento é opcional. |
|
|
|
String literal exibida na política exatamente como escrita. |
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")