View a markdown version of this page

Utilizzo di autorizzazioni gestite parametrizzate in AWS RAM - AWS Resource Access Manager

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à.

Utilizzo di autorizzazioni gestite parametrizzate in AWS RAM

Un'autorizzazione gestita con parametri è un'autorizzazione gestita con segnaposto nelle relative condizioni politiche che puoi inserire con i tuoi valori. Questi segnaposto sono parametri del modello. Non creano un nuovo tipo di autorizzazione gestita. Aggiungono variabilità al modello di policy di uno esistente.

Invece di creare un'autorizzazione gestita dal cliente separata per ogni valore di condizione univoco, si crea un'autorizzazione gestita dal cliente con parametri. Quando la si associa a una condivisione di risorse, si fornisce un valore per ogni parametro. AWS RAM sostituisce i valori nel modello di policy e allega la policy basata sulle risorse risultante alle risorse condivise.

Ad esempio, un team della piattaforma centrale crea un'autorizzazione gestita dal cliente per AWS Systems Manager Parametri: memorizza i parametri (tipo di risorsa) ssm:Parameter). Concede l'accesso in lettura solo ai presidi con un certificato approvato team etichetta. Il team della piattaforma condivide l'autorizzazione gestita dal cliente con gli account della propria organizzazione. Ogni account la utilizza quindi nelle proprie condivisioni di risorse, che possono contenere uno o più parametri di Parameter Store. In ogni condivisione di risorse, l'account fornisce team i valori dei tag dei principali in grado di leggere i parametri condivisi di Parameter Store.

tipi di parametri del modello

AWS RAM supporta due tipi di parametri. Il tipo determina in che modo AWS RAM sostituisce il valore nella policy renderizzata. Nel AWS RAM API e AWS CLI, i tipi sono STRING e STRING_LIST. Il AWS RAM la console li mostra come Stringa e StringList.

STRING

Accetta esattamente un valore di stringa.

  • Puoi usare un STRING parametro in una chiave di condizione o in un valore di condizione.

  • È possibile incorporare un STRING parametro in altro testo. Ad esempio, "arn:aws:iam::@{accountId}:role/Auditor".

  • Il valore renderizzato è sempre una stringa. Poiché gli operatori di condizione IAM convertono le stringhe nel tipo che confrontano, a STRING il parametro può fornire valori numerici, booleani, di data, indirizzo IP o ARN.

STRING_LIST

Accetta da 1 a 100 valori di stringa.

  • È possibile utilizzare un STRING_LIST parametro solo in un valore di condizione, non in una chiave di condizione.

  • Se il valore della condizione è una singola stringa che contiene solo il parametro, ad esempio "@{teams}", AWS RAM esegue il rendering di una matrice dei valori forniti. Se fornisci un singolo valore, AWS RAM esegue il rendering di una singola stringa.

  • Se il valore della condizione contiene del testo prima o dopo il parametro, ad esempio "arn:aws:iam::@{accountIds}:role/ParameterReader", AWS RAM combina ogni valore con quel testo.

  • Per combinare ogni valore con più di una stringa, elenca le stringhe in una matrice di valori di condizione. AWS RAM esegue il rendering di ogni voce dell'array per ogni valore e rimuove i risultati duplicati. Il risultato è sempre un array.

  • AWS RAM e IAM non divide una stringa con virgole. Una stringa separata da virgole viene confrontata come un valore.

Per alcuni esempi, consulta STRING_LIST esempi di parametri.

Regole di sintassi del modello di policy

Quando si aggiungono parametri al modello di policy di un'autorizzazione gestita, si applicano le seguenti regole. Se una richiesta viola una di queste regole, AWS RAM la rifiuta con un InvalidParameterException o InvalidPolicyException errore.

  • Un segnaposto per parametri utilizza la sintassi @{parameterName}.

  • I nomi dei parametri possono contenere lettere (a-z), A-Z), numeri (0-9), due punti (:), trattini (-) e trattini bassi (_). I nomi devono essere univoci all'interno di una versione con autorizzazione gestita e il confronto ignora le maiuscole e minuscole.

  • È necessario dichiarare ogni parametro quando si crea l'autorizzazione o la versione dell'autorizzazione. Ogni dichiarazione richiede un nome, un tipo e una descrizione. La descrizione può contenere fino a 255 caratteri.

  • Ogni parametro dichiarato deve apparire nel modello di policy.

  • I segnaposto corrispondono esattamente ai nomi dichiarati, lettere maiuscole e minuscole incluse. Testo in @{...} il formato che non corrisponde esattamente a un nome dichiarato rimane nella politica come testo letterale. Ad esempio, se dichiari teams ma scrivi @{Teams}, AWS RAM tratta @{Teams} come testo e rifiuta la richiesta perché teams non è usato.

  • I parametri possono essere visualizzati solo in Condition elemento, come chiave di condizione o come valore di condizione. AWS RAM rifiuta i parametri in Effect, Action, o qualsiasi altro elemento.

  • Una chiave di condizione può contenere al massimo un parametro e deve essere un STRING parametro. Il valore di una condizione può contenere più di un parametro, ad esempio "@{project}-@{stage}". Quando il valore di una condizione si combina STRING_LIST parametri, AWS RAM esegue il rendering di ogni combinazione dei relativi valori, fino a 100 stringhe per ogni valore di condizione.

  • È possibile dichiarare fino a 100 parametri per ogni versione di autorizzazione gestita.

  • I parametri non hanno valori predefiniti. Quando si associa l'autorizzazione a una condivisione di risorse, è necessario fornire un valore non vuoto per ogni parametro dichiarato e non è possibile fornire un nome non dichiarato o fornire lo stesso nome due volte.

Crea un'autorizzazione gestita con parametri

Si crea un'autorizzazione gestita con parametri nello stesso modo in cui si crea qualsiasi altra autorizzazione gestita dal cliente. La differenza è che si dichiarano i parametri e si utilizzano @{parameterName} segnaposti nelle condizioni del modello di policy.

Console
Per creare un'autorizzazione gestita con parametri
  1. Aprire il Libreria di autorizzazioni gestite e scegli Crea un'autorizzazione gestita dal cliente.

  2. Sotto Dettagli delle autorizzazioni gestite dal cliente, inserisci un nome e scegli il tipo di risorsa.

  3. Sotto Modello di politica, inserisci la politica. Usa @{parameterName} segnaposto nelle condizioni in cui desideri che ogni condivisione di risorse fornisca il proprio valore.

  4. Sotto Parametri del modello, scegli Aggiungi parametri dalla politica per aggiungere una riga per ogni segnaposto nella policy, oppure scegli Aggiungi parametro per aggiungere una riga alla volta. Per ogni parametro, immettete il Nome del parametro, scegli il Tipo (Corda o StringList) e inserisci un Descrizione. La descrizione viene mostrata a chiunque fornisca un valore per il parametro.

  5. (Facoltativo) Aggiungi dei tag.

  6. Scegli Crea un'autorizzazione gestita dal cliente.

AWS CLI
Per creare un'autorizzazione gestita con parametri
  • Esegui il autorizzazione di creazione comando con --policy-template e --permission-template-parameters parametri.

    L'esempio seguente crea un'autorizzazione gestita dal cliente per ssm:Parameter tipo di risorsa. In questa politica, i committenti possono leggere i parametri solo se hanno un team tag il cui valore è compreso in teams elenco.

    $ aws ram create-permission \ --name ParameterReadByTeam \ --resource-type ssm:Parameter \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}"}}}' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "1", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" } ] } }

Controllo della versione di un'autorizzazione gestita con parametri

La versione delle autorizzazioni gestite con parametri è identica a quella di qualsiasi altra autorizzazione gestita dal cliente. Ogni versione dichiara i propri parametri in modo indipendente, quindi una nuova versione può dichiarare un set di parametri diverso rispetto alla versione precedente.

Per creare una nuova versione, esegui create-permission-version comando con --policy-template e --permission-template-parameters parametri. L'esempio seguente aggiunge una seconda condizione con STRING parametro denominato environment.

$ aws ram create-permission-version \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","type":"STRING_LIST","description":"Values of the team principal tag that can read the shared parameters"},{"name":"environment","type":"STRING","description":"Value of the environment principal tag that can read the shared parameters"}]' \ --policy-template '{"Effect":"Allow","Action":["ssm:GetParameter","ssm:GetParameters"],"Condition":{"StringEquals":{"aws:PrincipalTag/team":"@{teams}","aws:PrincipalTag/environment":"@{environment}"}}}'

Una nuova versione diventa la versione predefinita non appena viene creata. Le condivisioni di risorse esistenti mantengono la versione utilizzata. Quando il proprietario di una condivisione di risorse la aggiorna alla nuova versione, deve fornire i valori per i parametri dichiarati dalla nuova versione. Per ulteriori informazioni, consulta Aggiornamento in corso AWS autorizzazioni gestite per una versione più recente.

Per ulteriori informazioni sul funzionamento delle versioni di autorizzazione gestite dal cliente e delle versioni predefinite, vedere Creazione e utilizzo delle autorizzazioni gestite dal cliente in AWS RAM.

Visualizza l'anteprima di un modello di policy renderizzato

Prima di associare un'autorizzazione gestita con parametri a una condivisione di risorse, è possibile visualizzare in anteprima la politica che AWS RAM esegue il rendering a partire da valori di parametri specifici.

Nel AWS RAM nella console, quando crei o aggiorni una condivisione di risorse, inserisci i valori in Valori dei parametri del modello e scegli Anteprima della politica renderizzata.

Nel AWS CLI, esegui il ottenere il permesso comando con --permission-template-parameters parametro. Il permission il campo della risposta contiene la politica con i tuoi valori al posto dei segnaposto.

$ aws ram get-permission \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]' { "permission": { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "permission": "{\"Effect\":\"Allow\",\"Action\":[\"ssm:GetParameter\",\"ssm:GetParameters\"],\"Condition\":{\"StringEquals\":{\"aws:PrincipalTag/team\":[\"payments\",\"analytics\"],\"aws:PrincipalTag/environment\":\"prod\"}}}", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "status": "ATTACHABLE", "permissionTemplateParameters": [ { "name": "teams", "type": "STRING_LIST", "description": "Values of the team principal tag that can read the shared parameters" }, { "name": "environment", "type": "STRING", "description": "Value of the environment principal tag that can read the shared parameters" } ] } }

Senza --permission-template-parameters parametro, il get-permission il comando restituisce il modello di politica con @{parameterName} segnaposto. Le permissionTemplateParameters il campo elenca il nome, il tipo e la descrizione di ogni parametro dichiarato.

Associa un'autorizzazione gestita con parametri a una condivisione di risorse

Quando si associa un'autorizzazione gestita con parametri a una condivisione di risorse, è necessario fornire valori per tutti i parametri dichiarati dalla versione. AWS RAM esegue il rendering del modello di policy con i valori specificati e allega la policy basata sulle risorse risultanti alle risorse condivise di quel tipo.

Console
Per associare un'autorizzazione gestita con parametri a una condivisione di risorse
  1. Quando si crea o si aggiorna una condivisione di risorse, in Associa le autorizzazioni gestite pagina, scegli l'autorizzazione gestita con parametri per il tipo di risorsa.

  2. Sotto Valori dei parametri del modello, immettete un valore per ogni parametro. Per un StringList parametro, premi Invio dopo ogni valore o incolla i valori separati da nuove righe.

  3. (Facoltativo) Scegli Anteprima della politica renderizzata per verificare la politica che AWS RAM allegherò.

  4. Completa il resto della procedura guidata. La pagina di revisione elenca i valori sotto Valori dei parametri del modello.

AWS CLI
Per associare un'autorizzazione gestita con parametri a una condivisione di risorse
  1. Esegui create-resource-share o associate-resource-share-permission con il --permission-template-parameters parametro.

    Per create-resource-share, il parametro è un elenco. Ogni voce contiene un permissionArn e il permissionTemplateParameters valori per tale autorizzazione. L'esempio seguente crea una condivisione di risorse che condivide un parametro Parameter Store con un altro Account AWS. Responsabili con team tag payments o analytics e il environment tag prod può leggerlo.

    $ aws ram create-resource-share \ --name PaymentsConfig \ --resource-arns arn:aws:ssm:us-east-1:123456789012:parameter/payments/endpoint \ --principals 111122223333 \ --permission-arns arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"permissionArn":"arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam","permissionTemplateParameters":[{"name":"teams","values":["payments","analytics"]},{"name":"environment","values":["prod"]}]}]' { "resourceShare": { "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "name": "PaymentsConfig", "owningAccountId": "123456789012", "allowExternalPrincipals": true, "status": "ACTIVE", "creationTime": 1763300000.000, "lastUpdatedTime": 1763300000.000, "featureSet": "STANDARD" } }

    create-resource-share utilizza sempre la versione predefinita di ogni autorizzazione gestita. È possibile associare solo la versione predefinita di un'autorizzazione gestita a una condivisione di risorse.

  2. Per modificare i valori dei parametri su una condivisione di risorse esistente o per spostarla nella versione predefinita dell'autorizzazione, esegui associate-resource-share-permission con il --replace parametro. Per questo comando, --permission-template-parameters accetta direttamente i valori dei parametri.

    $ aws ram associate-resource-share-permission \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --permission-arn arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam \ --permission-template-parameters '[{"name":"teams","values":["payments"]},{"name":"environment","values":["prod"]}]' \ --replace { "returnValue": true }

Per spostare molte condivisioni di risorse da una versione o autorizzazione a un'altra, esegui replace-permission-association. Se la versione di destinazione dichiara parametri, includi --permission-template-parameters. AWS RAM applica gli stessi valori a ogni condivisione di risorse che il comando aggiorna.

Visualizza i parametri e i valori del modello

È possibile visualizzare i parametri dichiarati da un'autorizzazione gestita e i valori forniti dalle condivisioni di risorse.

Visualizza i parametri dichiarati da un'autorizzazione gestita

Esegui il ottenere il permesso comando. Il permissionTemplateParameters il campo elenca il nome, il tipo e la descrizione di ogni parametro. Nella console, la pagina dei dettagli delle autorizzazioni mostra le stesse informazioni.

Visualizza i valori forniti da una condivisione di risorse

Esegui il list-resource-share-permissions comando. Per ogni autorizzazione gestita parametrizzata associata, permissionTemplateParameters il campo include i valori forniti dalla condivisione delle risorse.

$ aws ram list-resource-share-permissions \ --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 { "permissions": [ { "arn": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "version": "2", "defaultVersion": true, "name": "ParameterReadByTeam", "resourceType": "ssm:Parameter", "status": "ATTACHABLE", "creationTime": 1763400000.000, "lastUpdatedTime": 1763400000.000, "isResourceTypeDefault": false, "permissionType": "CUSTOMER_MANAGED", "featureSet": "STANDARD", "permissionTemplateParameters": [ { "name": "teams", "values": ["payments"] }, { "name": "environment", "values": ["prod"] } ] } ] }

Il list-permission-association il comando restituisce anche i valori per le condivisioni di risorse che possiedi. Quando si elencano le condivisioni di risorse in altri Account AWS che utilizzano un'autorizzazione gestita dal cliente che hai condiviso, la risposta non include i relativi valori.

Condivisione delle autorizzazioni gestite con parametri tra gli account

È possibile condividere un'autorizzazione gestita con parametri con altri Account AWS come qualsiasi altra autorizzazione gestita dal cliente. Gli account riceventi possono vedere il nome, il tipo e la descrizione di ogni parametro, quindi scrivi descrizioni che indichino loro quale valore fornire. Ogni account ricevente fornisce i propri valori quando associa l'autorizzazione gestita condivisa alle proprie condivisioni di risorse.

Per istruzioni sulla condivisione delle autorizzazioni gestite dai clienti, consulta Condivisione e utilizzo delle autorizzazioni gestite dal cliente tra gli account in AWS RAM.

Controlla i valori dei parametri del modello con le politiche IAM

Puoi usare ram:PermissionTemplateParameter/parameter-name chiave di condizione in una policy IAM per controllare quali valori un principale può fornire per un parametro. La chiave è multivalore e contiene i valori nella richiesta per il parametro indicato. È disponibile nella risorsa di autorizzazione per ram:CreateResourceShare, ram:AssociateResourceSharePermission, e ram:ReplacePermissionAssociations azioni.

Nel seguente esempio di politica, la prima dichiarazione concede le azioni sul ParameterReadByTeam autorizzazione gestita dal cliente. La seconda dichiarazione li nega se viene fornito un valore teams è qualcosa di diverso da payments o analytics. Poiché la chiave è multivalore, la policy utilizza ForAnyValue operatore set. AWS RAM richiede un valore per ogni parametro dichiarato, quindi una richiesta che utilizza questa autorizzazione gestita dal cliente include sempre la chiave.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam" }, { "Effect": "Deny", "Action": [ "ram:CreateResourceShare", "ram:AssociateResourceSharePermission", "ram:ReplacePermissionAssociations" ], "Resource": "arn:aws:ram:us-east-1:123456789012:permission/ParameterReadByTeam", "Condition": { "ForAnyValue:StringNotEquals": { "ram:PermissionTemplateParameter/teams": [ "payments", "analytics" ] } } } ] }

Queste dichiarazioni controllano solo la risorsa di autorizzazione. Il committente necessita inoltre dell'autorizzazione per le altre risorse incluse nella richiesta, ad esempio la condivisione delle risorse e le risorse che condivide. Per ulteriori esempi, consulta Esempi di policy IAM per AWS RAM.

STRING_LIST esempi di parametri

Gli esempi seguenti mostrano come AWS RAM rende STRING_LIST parametri.

Esempio A LISTA_STRINGHE parametro da solo in un valore di condizione

Modello:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": "@{teams}" } }

Valori: ["payments", "analytics"]

Politica renderizzata:

"Condition": { "StringEquals": { "aws:PrincipalTag/team": ["payments", "analytics"] } }

Con un unico valore ["payments"], il valore renderizzato è la stringa "payments".

Esempio UN LISTA_STRINGHE parametro con testo circostante

AWS RAM combina ogni valore con il testo prima e dopo il parametro.

Modello:

"Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::@{accountIds}:role/ParameterReader" } }

Valori: ["111122223333", "444455556666"]

Politica renderizzata:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/ParameterReader", "arn:aws:iam::444455556666:role/ParameterReader" ] } }
Esempio A LISTA_STRINGHE parametro in una matrice di valori di condizione

AWS RAM esegue il rendering di ogni voce nell'array per ogni valore e rimuove i risultati duplicati.

Modello:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::@{accountIds}:role/Auditor", "arn:aws:iam::@{accountIds}:role/Reader" ] } }

Valori: ["111122223333", "444455556666"]

Politica renderizzata:

"Condition": { "ArnLike": { "aws:PrincipalArn": [ "arn:aws:iam::111122223333:role/Auditor", "arn:aws:iam::444455556666:role/Auditor", "arn:aws:iam::111122223333:role/Reader", "arn:aws:iam::444455556666:role/Reader" ] } }