Perché il mio utente IAM ha accesso alle risorse del Data Catalog anche dopo che le sue autorizzazioni sono limitate in Lake Formation?

4 minuti di lettura
0

Ho limitato le autorizzazioni delle tabelle per un utente in AWS Lake Formation (ad esempio, SELECT con ExcludedColumnNames). Tuttavia, l'utente può comunque interrogare la tabella utilizzando Amazon Athena.

Breve descrizione

Lake Formation concede l'autorizzazione Super al gruppo IAMAllowedPrincipals per impostazione predefinita. Questa autorizzazione si applica a tutte le risorse esistenti del Catalogo dati AWS Glue. Se Usa solo il controllo degli accessi è abilitato, Lake Formation concede anche l'autorizzazione Super sulle nuove risorse. Ciò significa che le policy di AWS Identity and Access Management (IAM) controllano l'accesso alle risorse del catalogo dati e alle sedi di Amazon Simple Storage Service (Amazon S3). Per ulteriori informazioni, consulta Informazioni sull'aggiornamento al modello di autorizzazioni Lake Formation.

Per limitare l'accesso, modifica le impostazioni predefinite per assicurarti di utilizzare il modello di autorizzazioni di Lake Formation per le risorse del Data Catalog nuove ed esistenti.

Risoluzione

Per aggiornare le impostazioni di sicurezza per tutti i nuovi database e tabelle nel data lake, consulta Modifica le impostazioni del Data Catalog.

Per aggiornare le impostazioni di sicurezza solo per determinate nuove risorse, crea la risorsa e aggiorna le autorizzazioni solo su quella risorsa. Per ulteriori informazioni, consulta Proteggi le risorse esistenti del Data Catalog.

La modifica delle impostazioni di sicurezza predefinite si applica solo alle risorse create dopo l'aggiornamento delle impostazioni di sicurezza.

Per modificare le impostazioni di sicurezza per i database esistenti, rimuovi esplicitamente le autorizzazioni da IAMAllowedPrincipals su ogni database effettuando le seguenti operazioni:

  1. Apri la console AWS Lake Formation.
  2. Nel riquadro di navigazione, in Data catalog, scegli Database.
  3. Seleziona il cerchio accanto al database che desideri aggiornare.
  4. Scegli Azioni, quindi scegli Modifica.
  5. In Autorizzazioni predefinite per le tabelle appena create, deseleziona Usa solo il controllo di accesso IAM per le nuove tabelle in questo database.
  6. Scegli Salva.
  7. Nella pagina Database, assicurati che il database sia selezionato. Scegli Azioni, quindi scegli Revoca.
  8. Nella finestra di dialogo Revoca autorizzazioni, nell'elenco utenti e ruoli IAM, scorri verso il basso fino all'intestazione Gruppo, quindi scegli IAMAllowedPrincipals.
  9. In Autorizzazioni del database, assicurati che Super sia selezionato, quindi scegli Revoca.

Per modificare le impostazioni di sicurezza per le tabelle esistenti, rimuovi esplicitamente le autorizzazioni da IAMAllowedPrincipals su ogni tabella effettuando le seguenti operazioni:

  1. Apri la console AWS Lake Formation.
  2. Nel riquadro di navigazione, scegli Tabelle.
  3. Nella pagina Tabelle, seleziona il cerchio accanto alla tabella che desideri aggiornare.
  4. Scegli Azioni, quindi scegli Revoca.
  5. Nella finestra di dialogo Revoca autorizzazioni, nell'elenco utenti e ruoli IAM, scorri verso il basso fino all'intestazione Gruppo, quindi scegli IAMAllowedPrincipals
  6. In Autorizzazioni della tabella, assicurati che Super sia selezionato, quindi scegli Revoca

Nota: assicurati che il percorso Amazon S3 verso il database o la tabella sia registrato con Lake Formation.

Dopo aver modificato le impostazioni di sicurezza per le risorse esistenti, concedi le autorizzazioni della tabella all'utente o al ruolo IAM. Puoi farlo utilizzando la console Lake Formation o l'Interfaccia della linea di comando AWS (AWS CLI).

Nota: in caso di errori durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWC CLI.

Di seguito sono riportati esempi di comandi CLI che concedono l'autorizzazione SELECT su colonne specifiche:

Consenti SELECT solo su una colonna specifica:

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT"  --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnNames": ["prodcode","location","period","withdrawals"]}}'

Escludi colonne (consenti SELECT su tutte le colonne tranne la colonna specificata in ExcludedColumnNames):

aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT"  --resource '{ "TableWithColumns": {"DatabaseName":"retail", "Name":"inventory", "ColumnWildcard": {"ExcludedColumnNames": ["location"]}}}'

Per eseguire le operazioni di Lake Formation, i principali devono disporre delle autorizzazioni Lake Formation e IAM. Inoltre, per interrogare la tabella in Athena, l'utente deve disporre anche dell'autorizzazione per eseguire le query Athena. Ad esempio, per interrogare una tabella da Athena quando Lake Formation gestisce le autorizzazioni, l'utente deve disporre delle seguenti autorizzazioni IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "minimumAWSGlueLakeFormationAthenapermissiontorunselectqueryontable",
            "Effect": "Allow",
            "Action": [
                "lakeformation:GetDataAccess",
                "glue:SearchTables",
                "glue:GetTables",
                "glue:GetPartitions",
                "glue:GetDatabases",
                "glue:GetTable",
                "glue:GetDatabase",
                "athena:GetNamespace",
                "athena:ListWorkGroups",
                "athena:GetCatalogs",
                "athena:GetNamespaces",
                "athena:GetExecutionEngine",
                "athena:GetExecutionEngines",
                "athena:GetTables",
                "athena:GetTable"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AthenaPermissionToRunQueryInAWorkergroup",
            "Effect": "Allow",
            "Action": [
                "athena:StartQueryExecution",
                "athena:GetQueryResults",
                "athena:DeleteNamedQuery",
                "athena:GetNamedQuery",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResultsStream",
                "athena:ListNamedQueries",
                "athena:CreateNamedQuery",
                "athena:GetQueryExecution",
                "athena:BatchGetNamedQuery",
                "athena:BatchGetQueryExecution"
            ],
            "Resource": [
                "arn:aws:athena:*:*:workgroup/*"
            ]
        },
        {
            "Sid": "allowS3PermissionToSaveAthenaQueryResults",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:CreateBucket",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::aws-athena-query-results-*"
            ]
        }
    ]
}

Informazioni correlate

Modifica delle impostazioni di sicurezza predefinite per il data lake

AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa