View a markdown version of this page

Federati a Snowflake Catalogo Iceberg - AWS Lake Formation

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

Federati a Snowflake Catalogo Iceberg

AWS Glue Data Catalog prevede l'Snowflakeutilizzo delle credenziali OAuth2 di un service principal. Snowflake È possibile utilizzare questa federazione per connettersi ai cataloghi. Snowflake Horizon Snowflake Polaris Questo meccanismo di autenticazione consente a Data Catalog di accedere ai metadati di vari oggetti (come cataloghi, database e tabelle) presenti nel catalogo, in base ai privilegi associati all'entità del servizio. Per garantire l'accesso agli oggetti giusti, è essenziale concedere all'entità del servizio le autorizzazioni necessarie per leggere Snowflake i metadati di questi oggetti.

Prerequisiti

Prima di creare un catalogo federato in Data Catalog governato da Lake Formation, assicurati di disporre delle seguenti autorizzazioni:

Il tuo responsabile IAM (utente o ruolo) deve disporre delle seguenti autorizzazioni:

  • Autorizzazioni Lake Formation —, lakeformation:RegisterResource lakeformation:DescribeResource

  • AWS Glue autorizzazioni glue:CreateConnection,,, glue:CreateCatalog glue:GetConnection glue:PassConnection

  • Autorizzazioni di Secrets Manager —, secretsmanager:CreateSecret secretsmanager:GetSecretValue

  • Autorizzazioni IAM iam:CreateRole,, iam:AttachRolePolicy iam:PassRole

Devi essere un amministratore del data lake Formation o disporre dell'CREATE_CATALOGautorizzazione per il Data Catalog

Crea catalogo federato

  1. Accedi alla console e apri la console di Lake Formation all'indirizzo https://console.aws.amazon.com/lakeformation/.

  2. Scegli la AWS regione preferita nel selettore di regione.

  3. Nel riquadro di navigazione a sinistra, seleziona Cataloghi.

  4. Scegliete Crea catalogo per aprire il flusso di lavoro Crea catalogo.

  5. Nella fase Scegli l'origine dei dati, Snowflake seleziona una delle opzioni disponibili.

  6. Nella fase Imposta i dettagli del catalogo, fornisci tre informazioni: dettagli del catalogo, dettagli di connessione e dettagli di registrazione.

  7. Nel contenitore dei dettagli del catalogo, fornisci un nome univoco al tuo catalogo AWS Glue federato e inserisci il nome del Snowflake catalogo esistente.

  8. Nel contenitore dei dettagli delle connessioni, puoi scegliere tra una connessione esistente a cui hai accesso o fornire la configurazione per creare un nuovo connettore.

  9. Le nuove configurazioni di connessione includono:

    • Nome connessione: un nome univoco dell'oggetto di AWS Glue connessione.

    • URL dell'istanza: l'URL dell'endpoint del tuo Snowflake account esistente.

    • Autenticazione: specifica la configurazione di autenticazione AWS Glue utilizzata per connettersi al server di catalogo remoto. AWS Glue supporta sia l'autenticazione OAuth2 che quella personalizzata.

    • URL del token: l’URL del gestore dell’identità digitale del catalogo remoto.

    • ID client OAuth2: (facoltativo) Specifica l'ID client della credenziale OAuth2 associata al catalogo remoto. Se non fornisci un ID client, la richiesta del token viene autenticata utilizzando solo il segreto del client memorizzato in. AWS Secrets Manager

    • Segreto: archivia e utilizza il segreto del client OAuth2 utilizzando AWS Secrets Manager o inserisci il valore segreto nella casella di testo. Quando inserisci il segreto manualmente nella console, AWS Glue crea il segreto per tuo conto.

    • Ambito URL del token: l’ambito OAuth per l’autenticazione.

    • Catalog Casing Filter: scegli se portare oggetti minuscoli o maiuscoli dal tuo catalogo remoto a Data Catalog.

  10. Crea un ruolo IAM che AWS Glue i responsabili del servizio Lake Formation possano utilizzare rispettivamente per accedere a posizioni segrete in AWS Secrets Manager e Amazon S3 di tabelle Iceberg remote. Seleziona il ruolo IAM nel menu a discesa per la registrazione. Fai riferimento ai passaggi 2 e 3 nella seguente sezione CLI per i dettagli della politica IAM.

  11. Seleziona Test Connection per verificare se le proprietà di connessione e l'accesso ai ruoli IAM sono configurati correttamente.

  12. Seleziona Avanti per rivedere le impostazioni.

  13. Seleziona Crea catalogo nella pagina di revisione.

  1. Crea un AWS Secrets Manager segreto

    Il AWS Glue connettore supporta due tipi di autenticazione: OAuth2 e Custom. Quando si utilizza l'opzione OAuth2, utilizzala AWS Secrets Manager per memorizzare il segreto del client relativo all'entità del servizio. Snowflake Successivamente utilizzerai questo segreto durante la creazione della AWS Glue connessione. Per l'autenticazione personalizzata, utilizzalo AWS Secrets Manager per archiviare e recuperare il token di accesso.

    Nel seguente esempio, sostituisci your-snowflake-secretclient_secret, region con le tue informazioni.

    aws secretsmanager create-secret \ --name your-snowflake-secret \ --description "Snowflake secret" \ --secret-string '{ "USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET": "client_secret" }' \ --region region
    Nota

    USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRETè una parola chiave riservata che viene AWS Glue utilizzata per fare riferimento a un valore segreto del cliente contenuto nel segreto. Usa la stessa parola chiave anche quando crei il segreto nella console di Lake Formation.

  2. Crea un ruolo IAM che consenta all'oggetto di AWS Glue connessione di accedere al segreto creato nel passaggio precedente

    L'oggetto di AWS Glue connessione richiede l'accesso al AWS Secrets Manager segreto quando lo utilizzi AWS Secrets Manager per archiviare, recuperare e aggiornare il token segreto OAuth. L'oggetto di AWS Glue connessione richiede inoltre l'accesso per creare, descrivere e utilizzare le interfacce di rete Amazon VPC quando utilizzi un endpoint Amazon VPC per limitare la connettività al tuo account. Snowflake

    Crea una policy IAM e collegala a un ruolo IAM. Aggiungi l'entità del AWS Glue servizio alla policy di fiducia.

    Nell'esempio seguente your-secrets-manager-ARNyour-vpc-id, sostituisci e your-subnet-id1 con le tue informazioni.

    Esempio Politica IAM
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:PutSecretValue" ], "Resource": [ "your-secrets-manager-ARN" ] }, { "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": "*", "Condition": { "ArnEquals": { "ec2:Vpc": "arn:aws:ec2:region:account-id:vpc/your-vpc-id", "ec2:Subnet": ["arn:aws:ec2:region:account-id:subnet/your-subnet-id1"] } } } ] }
    Esempio Policy di attendibilità
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
  3. Crea una policy IAM che dia a Lake Formation l'accesso in lettura alla posizione Amazon S3 del catalogo

    In qualità di proprietario di un catalogo federato in Data Catalog, utilizzi Lake Formation per concedere ai tuoi team di dati l'accesso granulare alle tabelle, l'accesso granulare (a livello di colonna, a livello di riga e a livello di cella) e l'accesso basato su tag. Lake Formation utilizza un ruolo IAM che gli consente di accedere alle posizioni Amazon S3 sottostanti delle tabelle Iceberg remote. Questo accesso consente a Lake Formation di fornire credenziali di accesso con ambito ai motori di analisi che interrogano tabelle remote.

    Crea una policy IAM e collegala a un ruolo IAM. Aggiungi il responsabile del servizio Lake Formation alla policy di fiducia dei ruoli.

    Nell'esempio seguente, sostituisci amzn-s3-demo-bucketN e your-kms-key con le tue informazioni.

    Esempio Politica IAM
    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1/*", "arn:aws:s3:::amzn-s3-demo-bucket2/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket2" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt" ], "Resource": [ "your-kms-key" ] } ] }
    Esempio Policy di attendibilità
    { "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "lakeformation.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
    Nota

    Quando si utilizza la console Lake Formation per creare un catalogo federato, la console utilizza un singolo ruolo IAM con entrambe le policy associate alla configurazione completa.

  4. Crea un oggetto di AWS Glue connessione

    AWS Glue il connettore supporta i metodi di autenticazione OAuth2 e Custom. L'oggetto di connessione Data Catalog supporta la CATALOG_CASING_FILTER configurazione che consente di importare oggetti minuscoli o maiuscoli del catalogo remoto in Data Catalog.

    L'esempio seguente utilizza la configurazione di autenticazione OAuth2 per creare una connessione. AWS Glue Sostituisci highlighted sections con le tue informazioni.

    aws glue create-connection \ --connection-input '{ "Name": "your-glue-connection-to-snowflake-account", "ConnectionType": "SNOWFLAKEICEBERGRESTCATALOG", "ConnectionProperties": { "INSTANCE_URL": "your-snowflake-account-URL", "ROLE_ARN": "your-IAM-role-for-secrets-and-VPC-access", "CATALOG_CASING_FILTER": "LOWERCASE_ONLY" }, "AuthenticationConfiguration": { "AuthenticationType": "OAUTH2", "OAuth2Properties": { "OAuth2GrantType": "CLIENT_CREDENTIALS", "TokenUrl": "your-internal-or-external-token-server-url", "OAuth2ClientApplication": { "UserManagedClientApplicationClientId": "our-client-id" }, "TokenUrlParametersMap": { "scope": "all-apis" } }, "SecretArn": "arn:aws:secretsmanager:your-aws-region:your-aws-account-id:secret:snowflake-secret" } }'
    Nota

    Il campo OAuth2ClientApplication è facoltativo. Se lo ometti, la richiesta del token viene autenticata utilizzando solo il segreto del client memorizzato AWS Secrets Manager, senza inviare un ID cliente.

  5. Registra AWS Glue la connessione come risorsa Lake Formation

    Utilizzando l'oggetto di AWS Glue connessione (creato nel passaggio 4) e il ruolo IAM (creato nel passaggio 3), è ora possibile registrare l'oggetto di AWS Glue connessione come risorsa gestita da Lake Formation.

    Sostituisci your-glue-connector-arn e your-IAM-role-ARN-having-LF-access con le tue informazioni.

    aws lakeformation register-resource \ --resource-arn your-glue-connector-arn \ --role-arn your-IAM-role-ARN-having-LF-access \ --with-federation \ --with-privileged-access
  6. Crea un catalogo federato in Data Catalog

    Dopo aver creato un oggetto di AWS Glue connessione e averlo registrato con Lake Formation, puoi creare un catalogo federato nel Data Catalog:

    Fornisci al catalogo federato un nome univoco inyour-federated-catalog-name, fai riferimento al catalogo in Snowflake at catalog-name-in-Snowflake e inserisci il nome della connessione creata in precedenza in. your-glue-connection-name

    aws glue create-catalog \ --name your-federated-catalog-name \ --catalog-input '{ "FederatedCatalog": { "Identifier": catalog-name-in-Snowflake", "ConnectionName": your-glue-connection-name" }, "CreateTableDefaultPermissions": [], "CreateDatabaseDefaultPermissions": [] }'

Considerazioni relative all'integrazione con Snowflake

  • Quando si inseriscono risorse (come database e tabelle)Snowflake, Lake Formation non revoca automaticamente le autorizzazioni concesse a quella risorsa federata. Per rimuovere le autorizzazioni di accesso, è necessario revocare esplicitamente le autorizzazioni precedentemente concesse alla risorsa federata utilizzando Lake Formation.

  • Quando si monta un catalogo remoto con CATALOG_CASING_FILTER='UPPERCASE_ONLY' configurazione, i database e le tabelle con identificatori maiuscoli vengono federati, ma gli oggetti con identificatori minuscoli no.

  • È possibile riutilizzare la stessa connessione per creare più cataloghi federati. AWS Glue L'eliminazione di un catalogo non comporta l'eliminazione della connessione associata. Per eliminare una connessione, utilizza il aws glue delete-connection comando AWS CLI e assicurati che tutti i cataloghi associati vengano eliminati per primi.

  • I namespace annidati nel catalogo non sono supportati. Polaris Cioè, la federazione dei cataloghi può accedere a Iceberg tabelle remote che seguono una notazione in 3 parti. catalog.database.table