Warum hat mein IAM-Benutzer Zugriff auf Datenkatalogressourcen, obwohl seine Berechtigungen in Lake Formation eingeschränkt sind?

Lesedauer: 4 Minute
0

Ich habe die Tabellenberechtigungen für einen Benutzer in AWS Lake Formation eingeschränkt (z. B. SELECT mit ExcludedColumnNames). Der Benutzer kann die Tabelle jedoch weiterhin mit Amazon Athena abfragen.

Kurzbeschreibung

Lake Formation gewährt der GruppeiIAMAllowedPrincipalsstandardmäßig dieSuper-Berechtigung. Diese Genehmigung gilt für alle vorhandenen Ressourcen des AWS-Glue-Datenkatalogs. Wenn die OptionNur IAM-Zugriffskontrolle verwendenaktiviert ist, gewährt Lake Formation dieSuper-Berechtigung auch für neue Ressourcen. Das bedeutet, dass die Richtlinien von AWS Identity and Access Management (IAM) den Zugriff auf Datenkatalogressourcen und Standorte von Amazon Simple Storage Service (Amazon S3) kontrollieren. Weitere Informationen finden Sie unterÜber das Upgrade auf das Lake-Formation-Berechtigungsmodell.

Um den Zugriff einzuschränken, ändern Sie die Standardeinstellungen, um sicherzustellen, dass Sie das Lake-Formation-Berechtigungsmodell für neue und bestehende Datenkatalogressourcen verwenden.

Behebung

Informationen zum Aktualisieren der Sicherheitseinstellungen für alle neuen Datenbanken und Tabellen in Ihrem Data Lake finden Sie unterÄndern der Datenkatalogeinstellungen.

Um die Sicherheitseinstellungen nur für bestimmte neue Ressourcen zu aktualisieren, erstellen Sie die Ressource und aktualisieren Sie dann die Berechtigungen nur für diese Ressource. Weitere Informationen finden Sie unterSichern vorhandener Datenkatalogressourcen.

Die Änderung der Standardsicherheitseinstellungen gilt nur für die Ressourcen, die nach der Aktualisierung der Sicherheitseinstellungen erstellt werden.

Um die Sicherheitseinstellungen für bestehende Datenbanken zu ändern, entfernen Sie explizit die Berechtigungen vonIAMAllowedPrincipalsfür jede Datenbank, indem Sie wie folgt vorgehen:

  1. Öffnen Sie dieKonsole von AWS-Lake-Formation.
  2. Wählen Sie im Navigationsbereich unterDatenkatalogdie OptionDatenbankenaus.
  3. Wählen Sie den Kreis neben der Datenbank aus, die Sie aktualisieren möchten.
  4. Wählen SieAktionenund dannBearbeiten.
  5. Deaktivieren Sie unterStandardberechtigungen für neu erstellte Tabellendie OptionNur IAM-Zugriffskontrolle für neue Tabellen in dieser Datenbank verwenden.
  6. Wählen SieSpeichern.
  7. Vergewissern Sie sich, dass auf der SeiteDatenbankendie Datenbank ausgewählt ist. Wählen SieAktionenund dannWiderrufenaus.
  8. Scrollen Sie im DialogfeldBerechtigungen widerrufenin der Liste derIAM-Benutzer und -Rollennach unten zur ÜberschriftGruppenund wählen Sie dannIAMAllowedPrincipalsaus.
  9. Vergewissern Sie sich, dass unterDatenbankberechtigungen****Superausgewählt ist und wählen Sie dannWiderrufenaus.

Um die Sicherheitseinstellungen für bestehende Tabellen zu ändern, entfernen Sie explizit die Berechtigungen vonIAMAllowedPrincipalsfür jede Tabelle, indem Sie wie folgt vorgehen:

  1. Öffnen Sie dieKonsole von AWS-Lake-Formation.
  2. Wählen Sie im NavigationsbereichTabellenaus.
  3. Wählen Sie auf der SeiteTabellenden Kreis neben der Tabelle aus, die Sie aktualisieren möchten.
  4. Wählen SieAktionenund dannWiderrufenaus.
  5. Scrollen Sie im DialogfeldBerechtigungen widerrufenin der Liste derIAM-Benutzer und -Rollennach unten zur ÜberschriftGruppeund wählen Sie dannIAMAllowedPrincipals
  6. Vergewissern Sie sich, dass unterTabellenberechtigungen****Superausgewählt ist und wählen Sie dannWiderrufen

**Hinweis:**Stellen Sie sicher, dass der Amazon-S3-Pfad zur Datenbank oder Tabelle beiLake Formation registriertist.

Nachdem Sie die Sicherheitseinstellungen für vorhandene Ressourcen geändert haben,gewähren Sie dem IAM-Benutzer oder der IAM-Rolle Tabellenberechtigungen. Sie können dies mithilfe der Lake-Formation-Konsole oder der AWS-Befehlszeilenschnittstelle (AWS CLI) tun.

**Hinweis:**Wenn beim Ausführen von AWS CLI-Befehlen Fehler auftreten,stellen Sie sicher, dass Sie die neueste Version von AWS CLI verwenden.

Im Folgenden finden Sie Beispiele für CLI-Befehle, die dieSELECT-Berechtigung für bestimmte Spalten gewähren:

SELECT nur für eine bestimmte Spalte zulassen:

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"]}}'

Spalten ausschließen (SELECT für alle Spalten außer der Spalte zulassen, die unter ExcludedColumnNames angegeben ist):

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

Um Lake-Formation-Operationen ausführen zu können, müssen Principals über Lake-Formation- und IAM-Berechtigungen verfügen. Um die Tabelle in Athena abzufragen, muss der Benutzer außerdem über die Berechtigung verfügen, Athena-Abfragen auszuführen. Um beispielsweise eine Tabelle von Athena abzufragen, während Lake Formation Berechtigungen verwaltet, muss der Benutzer über die folgenden IAM-Berechtigungen verfügen:

{
    "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-*"
            ]
        }
    ]
}

Weitere Informationen

Ändern der Standardsicherheitseinstellungen für Ihren Data Lake

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Jahren