Utilizzo di Amazon S3 Access Grants con AWS Glue - AWS Glue

Utilizzo di Amazon S3 Access Grants con AWS Glue

Con Glue versione 5.0, Amazon S3 Access Grants fornisce una soluzione di controllo degli accessi scalabile che si può utilizzare per aumentare l'accesso ai dati Amazon S3 da AWS Glue. Se si dispone di una configurazione di autorizzazioni complessa o di grandi dimensioni per i dati S3, si può utilizzare Access Grants S3 per scalare le autorizzazioni relative ai dati S3 per utenti e ruoli.

Utilizzare S3 Access Grants per aumentare l'accesso ai dati di Amazon S3 oltre alle autorizzazioni concesse dal ruolo di runtime o dai ruoli IAM collegati alle identità con accesso a AWS Glue. Per ulteriori informazioni, consulta Gestione degli accessi con S3 Access Grants nella Guida per l'utente di Amazon S3.

Come funziona AWS Glue con S3 Access Grants

AWS Glue versione 5.0 e successive forniscono un'integrazione nativa con S3 Access Grants. Si può abilitare S3 Access Grants su AWS Glue ed eseguire i processi Spark. Quando il processo Spark effettua una richiesta di dati S3, Amazon S3 fornisce credenziali temporanee che rientrano nell'ambito del bucket, del prefisso o dell'oggetto specifico.

Di seguito è riportata una panoramica generale sul modo in cui AWS Glue ottiene l'accesso ai dati per cui S3 Access Grants gestisce l'accesso.

Il diagramma mostra una panoramica generale sul modo in cui AWS Glue ottiene l'accesso ai dati per cui S3 Access Grants gestisce l'accesso.
  1. Un utente invia un processo Spark di AWS Glue che utilizza dati archiviati in Amazon S3.

  2. AWS Glue elabora una richiesta a S3 Access Grants per fornire credenziali temporanee per l'utente che dà accesso al bucket, al prefisso o all'oggetto.

  3. AWS Glue restituisce credenziali temporanee sotto forma di token STS AWS (Security Token Service) per l'utente. Il token ha accesso al bucket, al prefisso o all'oggetto S3.

  4. AWS Glue utilizza il token STS per recuperare dati da S3.

  5. AWS Glue riceve i dati da S3 e restituisce i risultati all'utente.

Considerazioni su S3 Access Grants con AWS Glue

Annotare i seguenti comportamenti e limitazioni durante l'utilizzo di S3 Access Grants con AWS Glue.

Supporto funzionalità

  • S3 Access Grants è supportato con AWS Glue versioni 5.0 e successive.

  • Spark è l'unico tipo di processo supportato durante l'utilizzo di S3 Access Grants con AWS Glue.

  • Delta Lake e Hudi sono gli unici formati a tabella aperta supportati quando utilizzi S3 Access Grants con AWS Glue.

  • Le seguenti funzionalità non sono supportate per l'utilizzo con S3 Access Grants:

    • Tabelle Apache Iceberg

    • Richieste CLI di AWS ad Amazon S3 che utilizzano ruoli IAM

    • Accesso a S3 tramite il protocollo S3A open source

Considerazioni comportamentali

  • AWS Glue fornisce una cache delle credenziali per garantire che un utente non debba effettuare richieste ripetute per le stesse credenziali all'interno di un processo Spark. Pertanto, AWS Glue richiede sempre il privilegio di livello predefinito quando richiede le credenziali. Per ulteriori informazioni, consulta Richiedi l'accesso ai dati di S3 nella Guida per l'utente di Amazon S3.

Impostare S3 Access Grants con AWS Glue

Prerequisiti

Il chiamante o l'amministratore ha creato un'istanza S3 Access Grants.

Impostare le policy di AWS Glue e la configurazione del processo

Per configurare S3 Access Grants con AWS Glue, è necessario configurare le policy di trust e IAM e passare la configurazione tramite i parametri del processo.

  1. Configurare le seguenti policy IAM e di trust minima sul ruolo utilizzato per le concessioni (il ruolo AWS Glue che esegue sessioni o processi).

    Policy di trust:

    { "Sid": "Stmt1234567891011", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext" ], "Effect": "Allow", "Principal": { "Service": "access-grants.s3.amazonaws.com" }, "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012", "aws:SourceArn": "arn:aws:s3:<region>:123456789012:access-grants/default" } } }

    Policy IAM:

    { "Sid": "S3Grants", "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:<region>:123456789012:access-grants/default" }, { "Sid": "BucketLevelReadPermissions", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": [ "arn:aws:s3:<region>:123456789012:access-grants/default" ] } } }, { "Sid": "ObjectLevelReadPermissions", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "123456789012" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": [ "arn:aws:s3:<region>:123456789012:access-grants/default" ] } } }
  2. Nel processo AWS Glue, far passare la seguente configurazione Spark tramite i parametri di processo AWS Glue o SparkConf.

    --conf spark.hadoop.fs.s3.s3AccessGrants.enabled=true \ --conf spark.hadoop.fs.s3.s3AccessGrants.fallbackToIAM=false