Esempi di policy basate su risorse per AWS Glue - AWS Glue

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

Esempi di policy basate su risorse per AWS Glue

Questa sezione contiene le policy di esempio basate su risorse, tra cui le policy che concedono l'accesso multi-account.

Gli esempi utilizzano AWS Command Line Interface (AWS CLI) per l'interazione con le operazioni delle API del servizio AWS Glue. Puoi eseguire le stesse operazioni sulla console AWS Glue o utilizzare un SDK AWS.

Importante

Modificando una policy della risorsa AWS Glue, potresti accidentalmente revocare le autorizzazioni per gli utenti AWS Glue esistenti nel tuo account e provocare interruzioni impreviste. Prova questi esempi solo con gli account di sviluppo o di test e verifica che non interrompano nessun flusso di lavoro esistente prima di apportare le modifiche.

Considerazioni sull'utilizzo di policy basate su risorse con AWS Glue

Nota

Sia le policy IAM che una policy della risorsa AWS Glue richiedono pochi secondi, per la propagazione. Dopo aver collegato una nuova policy, potresti anche notare che la policy precedente è ancora in vigore finché la nuova policy non viene propagata attraverso il sistema.

È possibile utilizzare un documento di policy scritte in formato JSON per creare o modificare una policy della risorsa. La sintassi della policy è la stessa di una policy IAM basata sulle identità (consulta la documentazione di riferimento sulle policy JSON IAM), con le seguenti eccezioni:

  • Un blocco "Principal" o "NotPrincipal" è obbligatorio per ogni istruzione di policy.

  • Il "Principal" o il "NotPrincipal" deve identificare principali esistenti validi. I modelli dei caratteri jolly (ad esempio arn:aws:iam::account-id:user/*) non sono consentiti.

  • Il blocco "Resource" nella policy richiede che tutte le risorse ARN corrispondano alla seguente sintassi di espressione regolare (in cui il primo %s corrisponde alla regione e il secondo %s corrisponde all'id-account):

    *arn:aws:glue:%s:%s:(\*|[a-zA-Z\*]+\/?.*)

    Ad esempio, sia arn:aws:glue:us-west-2:account-id:* che arn:aws:glue:us-west-2:account-id:database/default sono consentiti, ma non è consentito *.

  • A differenza delle policy basate sulle identità, una policy della risorsa AWS Glue deve contenere solo Amazon Resource Names (ARN) di risorse appartenenti al catalogo a cui la policy è collegata. Tali ARN iniziano sempre con arn:aws:glue:.

  • Una policy non può impedire l'ulteriore creazione o modifica dell'identità che la crea.

  • La dimensione di un documento JSON di policy della risorsa non può superare 10 KB.

Utilizza una policy della risorsa per controllare gli accessi nello stesso account

In questo esempio, un utente admin nell'account A crea una policy della risorsa che concede all'utente IAM Alice dell'account A l'accesso completo al catalogo. Alice non ha alcuna policy IAM collegata.

Per eseguire questa operazione, l'utente amministratore esegue il comando seguente nella AWS CLI.

# Run as admin of Account A $ aws glue put-resource-policy --profile administrator-name --region us-west-2 --policy-in-json '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }'

Invece di inserire il documento di policy JSON come parte del tuo comando AWS CLI, è possibile risparmiare un documento di policy in un file e fare riferimento al percorso di file nel comando AWS CLI che ha il prefisso file://. Di seguito è riportato un esempio di come svolgere questa operazione.

$ echo '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }' > /temp/policy.json $ aws glue put-resource-policy --profile admin1 \ --region us-west-2 --policy-in-json file:///temp/policy.json

Dopo la propagazione di questa policy basata sulle risorse, Alice può accedere a tutte le risorse di AWS Glue nell'account A, come segue.

# Run as user Alice $ aws glue create-database --profile alice --region us-west-2 --database-input '{ "Name": "new_database", "Description": "A new database created by Alice", "LocationUri": "s3://my-bucket" }' $ aws glue get-table --profile alice --region us-west-2 --database-name "default" --table-name "tbl1"}

in risposta alla chiamata get-table di Alice, il servizio AWS Glue restituisce quanto segue.

{ "Table": { "Name": "tbl1", "PartitionKeys": [], "StorageDescriptor": { ...... }, ...... } }