Grammatica del linguaggio IAM JSON politico - AWS Identity and Access Management

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:

Per esempi di politiche utilizzate in altri AWS servizi, vai alla documentazione relativa a tali servizi.

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ò seguire id_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_blockelemento è 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'ID CanonicalUser. 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 di condition_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'Idelemento 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 nel Sid 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:accountnumber anziché quello completoARN. Per tutte le opzioni, tra cui AWS servizi, ruoli assunti e così via, vediCome specificare un preside.

È 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:PrincipalTypeaws: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:

"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" ] } }