Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Grammatica del linguaggio IAM JSON politico
Questa pagina presenta una grammatica formale per il linguaggio usato per creare JSON le politiche in. IAM Presentiamo questa grammatica in modo che sia possibile comprendere come costruire e convalidare le policy.
Per esempi di policy, consultare i seguenti argomenti:
-
Politiche e autorizzazioni in AWS Identity and Access Management
-
Politiche di esempio per lavorare nella EC2 console Amazon ed esempi di politiche per lavorare con AWS CLIEC2CLI, Amazon o un AWS SDKnella Amazon EC2 User Guide.
-
Esempi di policy del bucket e Esempi di policy utente nella Guida per l'utente di Amazon Simple Storage Service.
Per esempi di politiche utilizzate in altri AWS servizi, vai alla documentazione relativa a tali servizi.
Argomenti
Il linguaggio della politica e JSON
Le politiche sono espresse inJSON. Quando crei o modifichi una JSON politica, IAM può eseguire la convalida della politica per aiutarti a creare una politica efficace. IAMidentifica gli errori di JSON sintassi, mentre IAM Access Analyzer fornisce controlli aggiuntivi delle politiche con consigli per aiutarti a perfezionare ulteriormente le politiche. Per ulteriori informazioni sulla convalida delle policy, consulta IAMconvalida delle politiche. Per ulteriori informazioni sui controlli delle policy di IAM Access Analyzer e sui consigli attuabili, consulta Convalida delle policy di Access Analyzer. IAM
In questo documento, non forniamo una descrizione completa di ciò che è valido. JSON Tuttavia, ecco alcune JSON regole di base:
-
È consentito spazio vuoto tra singole entità.
-
I valori sono racchiusi tra virgolette. Le virgolette sono facoltative per valori numerici e booleani.
-
Molti elementi (ad esempio,
action_string_list
eresource_string_list
) possono assumere una JSON matrice come valore. Gli array possono richiedere uno o più valori. Se più di un valore è incluso, l'array è tra parentesi quadre ([
e]
) e delimitato da virgole, come nell'esempio seguente:"Action" : ["ec2:Describe*","ec2:List*"]
-
JSONI tipi di dati di base (booleano, numero e stringa) sono definiti in RFC 7159.
Convenzioni utilizzate in questa sintassi
Le convenzioni seguenti vengono utilizzate in questa grammatica:
-
I seguenti caratteri sono JSON token e sono inclusi nelle politiche:
{ } [ ] " , :
-
I seguenti caratteri sono caratteri speciali nella grammatica e non sono inclusi nelle policy:
= < > ( ) |
-
Se un elemento permette più valori, è indicato utilizzando valori ripetuti, un delimitatore di virgole e puntini di sospensione (
...
). Esempi:[<action_string>, <action_string>, ...]
<principal_map> = { <principal_map_entry>, <principal_map_entry>, ... }
Se più valori sono consentiti, è anche valido per includere un solo valore. Per un solo valore, la virgola finale deve essere omessa. Se l'elemento richiede un array (contrassegnato con [e]), ma solo un valore è incluso, le parentesi sono facoltative. Esempi:
"Action": [<action_string>]
"Action": <action_string>
-
Un punto di domanda (
?
) in seguito a un elemento indica che l'elemento è facoltativo. Esempio:<
version_block?>
Tuttavia, assicurarsi di fare riferimento alle note che seguono l'inserzione sulla grammatica sugli elementi opzionali.
-
Una linea verticale (
|
) tra elementi indica alternative. Nella grammatica, le parentesi definiscono la portata delle alternative. Esempio:("Principal" | "NotPrincipal")
-
Gli elementi che devono essere stringhe letterali vengono racchiusi tra virgolette (
"
). Esempio:<version_block> = "Version" : ("2008-10-17" | "2012-10-17")
Per ulteriori note, consultare Note sulla sintassi delle policy in seguito all'inserzione sulla grammatica.
Grammatica
La seguente inserzione descrive il linguaggio grammaticale della policy. Per le convenzioni utilizzate nell'inserzione, consultare la sezione precedente. Per ulteriori informazioni, consultare le seguenti note:
Nota
Questa grammatica descrive le policy contrassegnate con una versione di 2008-10-17
e 2012-10-17
. Un elemento di policy Version
è diverso da una versione di policy. L'elemento di policy Version
viene utilizzato all'interno di una policy e definisce la versione del linguaggio di policy. Una versione della politica, invece, viene creata quando si apportano modifiche a una politica gestita dai clienti inIAM. La policy modificata non viene sovrascritta a quella precedente. IAMCrea invece una nuova versione della politica gestita. Per ulteriori informazioni sull'elemento di policy Version
, consultare IAMJSONelementi politici: Version. Per ulteriori informazioni sulle versioni di policy, consultare Funzione Versioni multiple di policy 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>)
Note sulla sintassi delle policy
-
Una singola policy può contenere una gamma di istruzioni.
-
Le policy hanno una dimensione massima tra 2048 e 10.240 caratteri, in base a quale entità la policy è collegata. Per ulteriori informazioni, consulta IAMe AWS STS quote. I calcoli delle dimensioni della policy non includono spazi vuoti.
-
I singoli elementi non devono contenere più istanze della stessa chiave. Ad esempio, non è possibile includere il blocco
Effect
due volte nella stessa istruzione. -
I blocchi possono essere visualizzati in qualsiasi ordine. Ad esempio,
version_block
può seguireid_block
in una policy. Analogamente,effect_block
,principal_block
,action_block
può comparire in qualsiasi ordine all'interno di un'istruzione. -
id_block
è facoltativo nelle policy basate su risorse. Non deve essere incluso nelle policy basate sulle identità. -
L'
principal_block
elemento è richiesto nelle politiche basate sulle risorse (ad esempio, nelle policy dei bucket di Amazon S3) e nelle politiche di fiducia per i ruoli. IAM Non deve essere incluso nelle policy basate sulle identità. -
L'elemento
principal_map
nelle policy di bucket Amazon S3 può includere l'IDCanonicalUser
. La maggior parte delle policy basate su risorse non supporta questa mappatura. Per ulteriori informazioni sull'utilizzo dell'ID utente canonico in una policy di bucket, consulta Specifica di un principale in una policy nella Guida per l'utente di Amazon Simple Storage Service. -
Ogni valore di stringa (
policy_id_string
,sid_string
,principal_id_string
,action_string
,resource_string
,condition_type_string
,condition_key_string
e la versione di stringa dicondition_value
) può avere propri valori consentiti specifici, restrizioni di lunghezza minima e massima e un formato interno necessario.
Note sui valori di stringa
Questa sezione fornisce ulteriori informazioni sui valori di stringa utilizzati in diversi elementi in una policy.
action_string
-
Consiste in uno spazio dei nomi di un servizio, due punti e il nome di un'azione. I nomi delle operazioni possono includere caratteri jolly. Esempi:
"Action":"ec2:StartInstances" "Action":[ "ec2:StartInstances", "ec2:StopInstances" ] "Action":"cloudformation:*" "Action":"*" "Action":[ "s3:Get*", "s3:List*" ]
policy_id_string
-
Fornisce un modo per includere informazioni sulla policy complessiva. Alcuni servizi, come Amazon SQS e AmazonSNS, utilizzano l'
Id
elemento in modi riservati. Salvo diversamente limitato da un singolo servizio, policy_id_string può includere spazi. Alcuni servizi richiedono che questo valore sia unico all'interno di un AWS conto.Nota
L'endpoint
id_block
è consentito nelle policy basate su risorse, ma non nelle policy basate sulle identità.Non esiste alcun limite alla lunghezza, anche se questa stringa contribuisce alla lunghezza complessiva della policy, che è limitata.
"Id":"Admin_Policy" "Id":"cd3ad3d9-2776-4ef1-a904-4c229d1642ee"
sid_string
-
Fornisce un modo per includere informazioni su una istruzione individuale. Per IAM le policy, i caratteri alfanumerici di base (A-Z, a-z,0-9) sono gli unici caratteri consentiti nel valore.
Sid
Altro AWS i servizi che supportano le politiche relative alle risorse possono avere altri requisiti per il valore.Sid
Ad esempio, alcuni servizi richiedono che questo valore sia univoco all'interno di un Account AWS, e alcuni servizi consentono caratteri aggiuntivi come gli spazi nelSid
valore."Sid":"1" "Sid": "ThisStatementProvidesPermissionsForConsoleAccess"
principal_id_string
-
Fornisce un modo per specificare un principale utilizzando Amazon Resource Name (ARN) del Account AWS, IAM utente, IAM ruolo, utente federato o utente con ruolo presunto. Per un Account AWS, puoi anche utilizzare il modulo breve
AWS:
anziché quello completoARN. Per tutte le opzioni, tra cui AWS servizi, ruoli assunti e così via, vediCome specificare un preside.accountnumber
È possibile utilizzare * solo per specificare "tutti/anonimi". Non è possibile utilizzarlo per specificare parte di un nome oARN.
resource_string
-
Nella maggior parte dei casi, è costituito da un Amazon Resource Name (ARN).
"Resource":"arn:aws:iam::123456789012:user/Bob" "Resource":"arn:aws:s3:::amzn-s3-demo-bucket/*"
condition_type_string
-
Identifica il tipo di condizione da testare, ad esempio
StringEquals
,StringLike
,NumericLessThan
,DateGreaterThanEquals
,Bool
,BinaryEquals
,IpAddress
,ArnEquals
ecc. Per l'elenco completo dei tipi di condizione, consultare IAMJSONelementi politici: Condition Operators."Condition": { "NumericLessThanEquals": { "s3:max-keys": "10" } } "Condition": { "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringEquals": { "s3:x-amz-server-side-encryption": "AES256" } }
condition_key_string
-
Identifica la chiave di condizione il cui valore verrà testato per determinare se la condizione viene soddisfatta. AWS definisce un set di chiavi di condizione disponibili in tutti AWS servizi, tra cui
aws:PrincipalType
aws:SecureTransport
, eaws:userid
.Per un elenco di AWS chiavi di condizione, vediAWS chiavi di contesto della condizione globale. Per le chiavi di condizione specifiche per un servizio, consultare la documentazione per quel servizio, tra cui quanto segue:
-
Specifica delle condizioni in una policy nella Guida per l'utente di Amazon Simple Storage Service
-
IAMPolitiche per Amazon EC2 nella Amazon EC2 User Guide.
"Condition":{ "Bool": { "aws:SecureTransport": "true" } } "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "test" } }
-
condition_value_string
-
Identifica il valore di condition_key_string che determina se la condizione è soddisfatta. Per un elenco completo di valori validi per un tipo di condizione, consulta IAMJSONelementi politici: Condition Operators.
"Condition":{ "ForAnyValue:StringEquals": { "dynamodb:Attributes": [ "
ID
", "PostDateTime
" ] } }