Beispiele für identitätsbasierte Richtlinien für Glue AWS - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für identitätsbasierte Richtlinien für Glue AWS

Standardmäßig sind Benutzer und Rollen nicht berechtigt, AWS Glue-Ressourcen zu erstellen oder zu ändern. Sie können auch keine Aufgaben mithilfe von AWS Management Console, AWS Command Line Interface (AWS CLI) oder ausführen AWS API. Um Benutzern die Berechtigung zu erteilen, Aktionen mit den Ressourcen durchzuführen, die sie benötigen, kann ein IAM Administrator IAM Richtlinien erstellen. Der Administrator kann dann die IAM Richtlinien zu Rollen hinzufügen, und Benutzer können die Rollen übernehmen.

Informationen zum Erstellen einer IAM identitätsbasierten Richtlinie mithilfe dieser Beispieldokumente zu JSON Richtlinien finden Sie im IAMBenutzerhandbuch unter IAM Richtlinien erstellen (Konsole).

Einzelheiten zu den von AWS Glue definierten Aktionen und Ressourcentypen, einschließlich des Formats von ARNs für jeden der Ressourcentypen, finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS Glue in der Service Authorization Reference.

Anmerkung

Die Beispiele in diesem Abschnitt verwenden alle die us-west-2-Region. Sie können dies durch die AWS Region ersetzen, die Sie verwenden möchten.

Bewährte Methoden für Richtlinien

Identitätsbasierte Richtlinien legen fest, ob jemand AWS Glue-Ressourcen in Ihrem Konto erstellen, darauf zugreifen oder sie löschen kann. Dies kann zusätzliche Kosten für Ihr verursachen AWS-Konto. Befolgen Sie beim Erstellen oder Bearbeiten identitätsbasierter Richtlinien die folgenden Anleitungen und Empfehlungen:

  • Beginnen Sie mit AWS verwalteten Richtlinien und wechseln Sie zu Berechtigungen mit den geringsten Rechten — Verwenden Sie die AWS verwalteten Richtlinien, die Berechtigungen für viele gängige Anwendungsfälle gewähren, um damit zu beginnen, Ihren Benutzern und Workloads Berechtigungen zu gewähren. Sie sind in Ihrem verfügbar. AWS-Konto Wir empfehlen Ihnen, die Berechtigungen weiter zu reduzieren, indem Sie vom AWS Kunden verwaltete Richtlinien definieren, die speziell auf Ihre Anwendungsfälle zugeschnitten sind. Weitere Informationen finden Sie AWS im IAMBenutzerhandbuch unter AWS Verwaltete Richtlinien oder Verwaltete Richtlinien für Jobfunktionen.

  • Berechtigungen mit den geringsten Rechten anwenden — Wenn Sie Berechtigungen mit IAM Richtlinien festlegen, gewähren Sie nur die Berechtigungen, die für die Ausführung einer Aufgabe erforderlich sind. Sie tun dies, indem Sie die Aktionen definieren, die für bestimmte Ressourcen unter bestimmten Bedingungen durchgeführt werden können, auch bekannt als die geringsten Berechtigungen. Weitere Informationen zur Verwendung IAM zum Anwenden von Berechtigungen finden Sie IAMim Benutzerhandbuch unter Richtlinien und Berechtigungen. IAM

  • Verwenden Sie Bedingungen in IAM Richtlinien, um den Zugriff weiter einzuschränken — Sie können Ihren Richtlinien eine Bedingung hinzufügen, um den Zugriff auf Aktionen und Ressourcen einzuschränken. Sie können beispielsweise eine Richtlinienbedingung schreiben, um anzugeben, dass alle Anfragen mit gesendet werden müssenSSL. Sie können auch Bedingungen verwenden, um Zugriff auf Serviceaktionen zu gewähren, wenn diese über einen bestimmten Zweck verwendet werden AWS-Service, z. AWS CloudFormation B. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter IAMJSONRichtlinienelemente: Bedingung.

  • Verwenden Sie IAM Access Analyzer, um Ihre IAM Richtlinien zu validieren, um sichere und funktionale Berechtigungen zu gewährleisten. IAM Access Analyzer validiert neue und bestehende Richtlinien, sodass die Richtlinien der IAM Richtliniensprache (JSON) und den IAM bewährten Methoden entsprechen. IAMAccess Analyzer bietet mehr als 100 Richtlinienprüfungen und umsetzbare Empfehlungen, um Sie bei der Erstellung sicherer und funktionaler Richtlinien zu unterstützen. Weitere Informationen finden Sie im IAMBenutzerhandbuch unter Überprüfen von Richtlinien mit IAM Access Analyzer.

  • Multi-Faktor-Authentifizierung erforderlich (MFA) — Wenn Sie ein Szenario haben, in dem IAM Benutzer oder ein Root-Benutzer erforderlich sind AWS-Konto, aktivieren Sie die Option MFA für zusätzliche Sicherheit. Wenn Sie festlegen möchten, MFA wann API Operationen aufgerufen werden, fügen Sie MFA Bedingungen zu Ihren Richtlinien hinzu. Weitere Informationen finden Sie unter Sicherer API Zugriff mit MFA im IAMBenutzerhandbuch.

Weitere Informationen zu bewährten Methoden finden Sie unter Bewährte Sicherheitsmethoden IAM im IAM Benutzerhandbuch. IAM

Berechtigungen auf Ressourcenebene gelten nur für bestimmte AWS Glue objects

Sie können eine detaillierte Steuerung nur für bestimmte Objekte in definieren AWS Glue. Daher müssen Sie die IAM Richtlinie Ihres Kunden so schreiben, dass API Operationen, die Amazon Resource Names (ARNs) für die Resource Anweisung zulassen, nicht mit API Vorgängen vermischt werden, die dies nicht zulassenARNs.

Die folgende IAM Richtlinie erlaubt beispielsweise API Operationen für GetClassifier undGetJobRun. Sie definiert das Resource als, * weil AWS Glue erlaubt ARNs keine Klassifikatoren und Jobläufe. Weil bestimmte API Operationen wie GetDatabase und zulässig ARNs sindGetTable, ARNs können sie in der zweiten Hälfte der Richtlinie angegeben werden.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetClassifier*", "glue:GetJobRun*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:Get*" ], "Resource": [ "arn:aws:glue:us-east-1:123456789012:catalog", "arn:aws:glue:us-east-1:123456789012:database/default", "arn:aws:glue:us-east-1:123456789012:table/default/e*1*", "arn:aws:glue:us-east-1:123456789012:connection/connection2" ] } ] }

Für eine Liste AWS Glue Objekte, die das zulassenARNs, finden Sie unterAWS GlueRessource angeben ARNs.

Verwenden der AWS Glue-Konsole

Um auf die AWS Glue-Konsole zugreifen zu können, benötigen Sie ein Mindestmaß an Berechtigungen. Diese Berechtigungen müssen es Ihnen ermöglichen, Details zu den AWS Glue-Ressourcen in Ihrem aufzulisten und anzuzeigen AWS-Konto. Wenn Sie eine identitätsbasierte Richtlinie erstellen, die strenger ist als die mindestens erforderlichen Berechtigungen, funktioniert die Konsole nicht wie vorgesehen für Entitäten (Benutzer oder Rollen) mit dieser Richtlinie.

Sie müssen Benutzern, die nur Anrufe an den AWS CLI oder den tätigen, keine Mindestberechtigungen für die Konsole gewähren AWS API. Erlauben Sie stattdessen nur den Zugriff auf die Aktionen, die dem API Vorgang entsprechen, den sie ausführen möchten.

Um sicherzustellen, dass Benutzer und Rollen die AWS Glue-Konsole weiterhin verwenden können, fügen Sie den Entitäten auch die AWS Glue ConsoleAccess - oder ReadOnly AWS verwaltete Richtlinie hinzu. Weitere Informationen finden Sie im Benutzerhandbuch unter Hinzufügen von Berechtigungen für einen IAM Benutzer.

Damit ein Benutzer mit dem arbeiten kann AWS Glue Dieser Benutzer muss über Mindestberechtigungen verfügen, die es ihm ermöglichen, mit der Konsole zu arbeiten AWS Glue Ressourcen für ihr AWS Konto. Zusätzlich zu diesen AWS Glue Berechtigungen, für die Konsole sind Berechtigungen der folgenden Dienste erforderlich:

  • Amazon CloudWatch Logs-Berechtigungen zum Anzeigen von Protokollen.

  • AWS Identity and Access Management (IAM) Berechtigungen zum Auflisten und Übergeben von Rollen.

  • AWS CloudFormation Berechtigungen zum Arbeiten mit Stacks.

  • Amazon Elastic Compute Cloud (AmazonEC2) -Berechtigungen für ListenVPCs, Subnetze, Sicherheitsgruppen, Instances und andere Objekte.

  • Amazon Simple Storage Service (Amazon S3)-Berechtigungen zum Auflisten von Buckets und Objekten sowie zum Abrufen und Speichern von Skripts.

  • Amazon-Redshift-Berechtigungen für die Arbeit mit Clustern.

  • Amazon Relational Database Service (AmazonRDS) -Berechtigungen zum Auflisten von Instances.

Weitere Informationen zu den Berechtigungen, die Benutzer zum Anzeigen und Arbeiten mit ihnen benötigen, finden Sie unter AWS Glue Konsole finden Sie unterSchritt 3: Hängen Sie eine Richtlinie an Benutzer oder Gruppen an, die darauf zugreifen AWS Glue.

Wenn Sie eine IAM Richtlinie erstellen, die restriktiver ist als die erforderlichen Mindestberechtigungen, funktioniert die Konsole für Benutzer mit dieser IAM Richtlinie nicht wie vorgesehen. Um sicherzustellen, dass diese Benutzer die weiterhin verwenden können AWS Glue Fügen Sie der Konsole auch die AWSGlueConsoleFullAccess verwaltete Richtlinie bei, wie unter beschriebenAWS verwaltete (vordefinierte) Richtlinien für AWS Glue.

Gewähren der Berechtigung zur Anzeige der eigenen Berechtigungen für Benutzer

Dieses Beispiel zeigt, wie Sie eine Richtlinie erstellen könnten, die es IAM Benutzern ermöglicht, die Inline- und verwalteten Richtlinien einzusehen, die mit ihrer Benutzeridentität verknüpft sind. Diese Richtlinie umfasst Berechtigungen zum Ausführen dieser Aktion auf der Konsole oder programmgesteuert mithilfe von oder. AWS CLI AWS API

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

Nur-Leseberechtigung für eine Tabelle erteilen

Die folgende Richtlinie gewährt Lesezugriff auf eine Tabelle books in der Datenbank db1. Weitere Informationen zur Ressource Amazon Resource Names (ARNs) finden Sie unterDatenkatalog ARNs.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesActionOnBooks", "Effect": "Allow", "Action": [ "glue:GetTables", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Diese Richtlinie gewährt Lesezugriff auf eine Tabelle mit dem Namen books in der Datenbank namens db1. Zum Erteilen der Berechtigung Get zu einer Tabelle ist auch die Berechtigung für den Katalog und die Datenbankressourcen erforderlich.

Die folgende Richtlinie gewährt die Mindestberechtigungen zum Erstellen der Tabelle tb1 in der Datenbank db1:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:table/db1/tbl1", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:catalog" ] } ] }

Filtern Sie Tabellen nach GetTables Berechtigungen

Angenommen, es gibt drei Tabellen customers , stores und store_sales in der Datenbank db1. Die folgende Richtlinie gewährt GetTables die Berechtigung für stores und store_sales, aber nicht für customers. Wenn Sie GetTables mit dieser Richtlinie aufrufen, enthält das Ergebnis nur die beiden autorisierten Tabellen (die Tabelle customers wird nicht zurückgegeben).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store_sales", "arn:aws:glue:us-west-2:123456789012:table/db1/stores" ] } ] }

Sie können die vorhergehende Richtlinie vereinfachen, indem Sie store* angeben und so alle Tabellennamen einschließen, die mit store beginnen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesExample2", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/store*" ] } ] }

In ähnlicher Weise wird bei Verwendung von /db1/* zum Einschließen aller Tabellen in db1 durch die folgende Richtlinie GetTables Zugriff auf alle Tabellen in db1 gewährt.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesReturnAll", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }

Wenn keine Tabelle angegeben ARN wird, ist ein Aufruf von GetTables erfolgreich, es wird jedoch eine leere Liste zurückgegeben.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesEmptyResults", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1" ] } ] }

Wenn die Datenbank in der Richtlinie ARN fehlt, schlägt ein Aufruf von mit einem GetTables AccessDeniedException fehl.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetTablesAccessDeny", "Effect": "Allow", "Action": [ "glue:GetTables" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:table/db1/*" ] } ] }

Vollständiger Zugriff auf eine Tabelle und alle Partitionen gewähren

Die folgende Richtlinie gewährt alle Berechtigungen für eine Tabelle mit dem Namen books in der Datenbank db1. Dazu gehören Lese- und Schreibrechte für die Tabelle selbst, die archivierten Versionen und alle Partitionen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:GetTableVersion", "glue:GetTableVersions", "glue:DeleteTableVersion", "glue:BatchDeleteTableVersion", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Die vorhergehende Richtlinie kann in der Praxis vereinfacht werden.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FullAccessOnTable", "Effect": "Allow", "Action": [ "glue:*Table*", "glue:*Partition*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/db1", "arn:aws:glue:us-west-2:123456789012:table/db1/books" ] } ] }

Beachten Sie, dass die minimale Granularität der differenzierten Zugriffskontrolle auf Tabellenebene liegt. Das bedeutet, dass Sie einem Benutzer keinen Zugriff auf einige Partitionen in einer Tabelle gewähren können, aber nicht auf andere, oder auf einige Tabellenspalten, aber nicht auf andere. Ein Benutzer hat entweder Zugriff auf die gesamte oder auf keinen Teil der Tabelle.

Steuerung des Zugriffs über Namenspräfix und explizites Verweigern

Nehmen wir in diesem Beispiel an, dass die Datenbanken und Tabellen in Ihrem AWS Glue-Datenkatalog anhand von Namenspräfixen organisiert sind. Die Datenbanken in der Entwicklungsphase haben das Namenspräfix dev- und die in Produktion haben das Namenspräfix prod-. Sie können die folgende Richtlinie verwenden, um Entwicklern vollen Zugriff auf alle Datenbanken, UDFs Tabellen usw. zu gewähren, die das dev- Präfix haben. Aber Sie gewähren Lesezugriff auf alle Elemente mit dem Präfix prod-.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DevAndProdFullAccess", "Effect": "Allow", "Action": [ "glue:*Database*", "glue:*Table*", "glue:*Partition*", "glue:*UserDefinedFunction*", "glue:*Connection*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:catalog", "arn:aws:glue:us-west-2:123456789012:database/dev-*", "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/dev-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/dev-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/dev-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/dev-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/dev-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] }, { "Sid": "ProdWriteDeny", "Effect": "Deny", "Action": [ "glue:*Create*", "glue:*Update*", "glue:*Delete*" ], "Resource": [ "arn:aws:glue:us-west-2:123456789012:database/prod-*", "arn:aws:glue:us-west-2:123456789012:table/prod-*/*", "arn:aws:glue:us-west-2:123456789012:table/*/prod-*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/prod-*/*", "arn:aws:glue:us-west-2:123456789012:userDefinedFunction/*/prod-*", "arn:aws:glue:us-west-2:123456789012:connection/prod-*" ] } ] }

Die zweite Anweisung in der vorhergehenden Richtlinie verwendet explizit deny. Sie können explizit deny verwenden, um beliebige allow-Berechtigungen zu überschreiben, die dem Prinzipal erteilt werden. Auf diese Weise können Sie den Zugriff auf kritische Ressourcen sperren und verhindern, dass eine andere Richtlinie versehentlich Zugriff auf diese gewährt.

Auch wenn die erste Anweisung im vorherigen Beispiel Vollzugriff auf prod--Ressourcen gewährt, widerruft die zweite Anweisung explizit den Schreibzugriff auf sie, sodass nur Lesezugriff auf prod--Ressourcen besteht.

Zugriffssteuerung gewähren mit Tags

Angenommen, Sie möchten den Zugriff auf einen t2-Auslöser auf einen bestimmten Benutzer mit dem Namen Tom in Ihrem Konto einschränken. Alle anderen Benutzer, einschließlich Sam, haben Zugriff auf den Auslöser t1. Die Auslöser t1 und t2 haben die folgenden Eigenschaften.

aws glue get-triggers { "Triggers": [ { "State": "CREATED", "Type": "SCHEDULED", "Name": "t1", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" }, { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } ] }

Das Tool AWS Glue Der Administrator hat einen Tagwert Tom (aws:ResourceTag/Name": "Tom") zum Auslösen angehängtt2. Das Tool AWS Glue Der Administrator gab Tom außerdem eine IAM Richtlinie mit einer Bedingungserklärung, die auf dem Tag basierte. Aus diesem Grund kann Tom nur eine verwenden AWS Glue Operation, die auf Ressourcen mit dem Tag-Wert einwirktTom.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Wenn Tom versucht, auf den Auslöser t1 zuzugreifen, erhält er die Meldung, dass ihm der Zugriff verweigert wurde. Er kann aber den Auslöser t2 erfolgreich abrufen.

aws glue get-trigger --name t1 An error occurred (AccessDeniedException) when calling the GetTrigger operation: User: Tom is not authorized to perform: glue:GetTrigger on resource: arn:aws:glue:us-east-1:123456789012:trigger/t1 aws glue get-trigger --name t2 { "Trigger": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j1" } ], "Schedule": "cron(0 0/1 * * ? *)" } }

Tom kann die GetTriggers API Pluraloperation nicht verwenden, um Trigger aufzulisten, weil diese Operation das Filtern nach Tags nicht unterstützt.

Um Tom Zugriff zu GetTriggers gewähren AWS Glue Der Administrator erstellt eine Richtlinie, die die Berechtigungen in zwei Abschnitte unterteilt. Ein Abschnitt ermöglicht Tom den Zugriff auf alle Auslöser der GetTriggers API Operation. Der zweite Abschnitt ermöglicht Tom den Zugriff auf API Operationen, die mit dem Wert gekennzeichnet sindTom. Mit dieser Richtlinie wird Tom sowohl Zugriff auf GetTriggers als auch auf GetTrigger gewährt, um auf den Auslöser t2 zuzugreifen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": "glue:*", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Zugriff mit Tags verweigern

Ein anderer Ansatz einer Ressourcenrichtlinie besteht darin, den Zugriff auf Ressourcen ausdrücklich zu verweigern.

Wichtig

Eine explizite Ablehnungsrichtlinie funktioniert nicht für mehrere API Operationen wie. GetTriggers

In der folgenden Beispielrichtlinie sind alle AWS Glue Joboperationen sind zulässig. Die zweite Effect-Aussage verweigert jedoch ausdrücklich den Zugriff auf Aufträge, die mit dem Team-Schlüssel und dem Special-Wert gekennzeichnet sind.

Wenn ein Administrator einer Identität die folgende Richtlinie zuordnet, kann die Identität auf alle Aufträge zugreifen, mit Ausnahme derjenigen, die mit dem Team-Schlüssel und dem Special-Wert gekennzeichnet sind.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*" }, { "Effect": "Deny", "Action": "glue:*", "Resource": "arn:aws:glue:us-east-1:123456789012:job/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Special" } } } ] }

Verwenden Sie Tags bei Listen- und API Batch-Operationen

Ein dritter Ansatz beim Schreiben einer Ressourcenrichtlinie besteht darin, den Zugriff auf Ressourcen mithilfe einer List API Operation zu ermöglichen, bei der Ressourcen für einen Tagwert aufgelistet werden. Verwenden Sie dann die entsprechende Batch API Operation, um den Zugriff auf Details bestimmter Ressourcen zu ermöglichen. Bei diesem Ansatz muss der Administrator den Zugriff auf die GetTriggers API Operationen im PluralGetCrawlers, GetDevEndpointsGetJobs, oder nicht gewähren. Stattdessen können Sie die Möglichkeit zulassen, die Ressourcen mit den folgenden API Operationen aufzulisten:

  • ListCrawlers

  • ListDevEndpoints

  • ListJobs

  • ListTriggers

Außerdem können Sie mit den folgenden API Vorgängen die Möglichkeit bieten, Details zu einzelnen Ressourcen abzurufen:

  • BatchGetCrawlers

  • BatchGetDevEndpoints

  • BatchGetJobs

  • BatchGetTriggers

Um diesen Ansatz zu nutzen, können Sie als Administrator wie folgt vorgehen:

  1. Hinzufügen von Tags zu Ihren Crawlern, Entwicklungsendpunkten, Aufträgen und Auslösern.

  2. Verweigern Sie Benutzern den Zugriff auf Get API Operationen wie GetCrawlersGetDevEndponts,GetJobs, undGetTriggers.

  3. Damit Benutzer herausfinden können, auf welche markierten Ressourcen sie Zugriff haben, gewähren Sie Benutzern Zugriff auf List API Operationen wie ListCrawlersListDevEndponts,ListJobs, undListTriggers.

  4. Verweigern Sie dem Benutzer den Zugriff auf AWS Glue TaggingAPIs, z. B. TagResource undUntagResource.

  5. Erlauben Sie Benutzern den Zugriff auf Ressourcendetails mit BatchGet API Operationen wieBatchGetCrawlers, BatchGetDevEndpontsBatchGetJobs, undBatchGetTriggers.

Wenn Sie beispielsweise die ListCrawlers-Operation aufrufen, geben Sie einen Tag-Wert ein, der dem Benutzernamen entspricht. Das Ergebnis ist dann eine Liste der Crawler, die mti den angegebenen Tag-Werten übereinstimmen. Stellen Sie BatchGetCrawlers die Liste mit den Namen der Crawler zur Verfügung, um detaillierte Informationen zu jedem Crawler mit dem angegebenen Tag zu erhalten.

Wenn Tom beispielsweise nur in der Lage sein soll, Details von Auslösern abzurufenTom, die mit markiert sind, kann der Administrator Tags zu Triggern für hinzufügenTom, allen Benutzern den Zugriff auf den GetTriggers API Vorgang verweigern und allen Benutzern den Zugriff auf ListTriggers und gewährenBatchGetTriggers.

Im Folgenden finden Sie die Ressourcenrichtlinie, die AWS Glue Der Administrator gewährt Tom. Im ersten Abschnitt der Richtlinie AWS Glue APIOperationen wurden verweigert fürGetTriggers. Im zweiten Teil der Richtlinie wird ListTriggers für alle Ressourcen gewährt. Im dritten Teil wird den durch Tom markierten Ressourcen jedoch Zugriff mit BatchGetTriggers-Zugriff gewährt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "glue:GetTriggers", "Resource": "*" }, { "Effect": "Allow", "Action": [ "glue:ListTriggers" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:BatchGetTriggers" ], "Resource": [ "*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Name": "Tom" } } } ] }

Unter Verwendung der gleichen Auslöser wie im vorherigen Beispiel kann Tom auf den Auslöser t2, aber nicht auf den Auslöser t1 zugreifen. Das folgende Beispiel zeigt die Ergebnisse, wenn Tom versucht, mit BatchGetTriggers auf t1 und t2 zuzugreifen.

aws glue batch-get-triggers --trigger-names t2 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "Schedule": "cron(0 0/1 * * ? *)" } } aws glue batch-get-triggers --trigger-names t1 An error occurred (AccessDeniedException) when calling the BatchGetTriggers operation: No access to any requested resource.

Das folgende Beispiel zeigt die Ergebnisse, wenn Tom in demselben BatchGetTriggers-Aufruf versucht, sowohl auf den Auslöser t2 als auch auf den Auslöser t3 (nicht vorhanden) zuzugreifen. Beachten Sie, dass nur t2 zurückgegeben wird, da Tom Zugriff auf Auslöser t2 hat und dieser vorhanden ist. Obwohl Tom auf Auslöser t3 zugreifen darf, wird t3 in der Antwort in einer Liste von "TriggersNotFound": [] zurückgegeben, da Auslöser t3 nicht vorhanden ist.

aws glue batch-get-triggers --trigger-names t2 t3 { "Triggers": { "State": "CREATED", "Type": "SCHEDULED", "Name": "t2", "Actions": [ { "JobName": "j2" } ], "TriggersNotFound": ["t3"], "Schedule": "cron(0 0/1 * * ? *)" } }

Einstellungen über Bedingungsschlüssel oder Kontextschlüssel steuern

Sie können Bedingungsschlüssel oder Kontextschlüssel verwenden, wenn Sie Berechtigungen zum Erstellen und Aktualisieren von Aufträgen erteilen. In diesen Abschnitten werden die Schlüssel behandelt:

Steuern von Richtlinien, die Einstellungen über Bedingungsschlüssel steuern

AWS Glue bietet drei IAM Zustandstasten glue:VpcIdsglue:SubnetIds, undglue:SecurityGroupIds. Sie können die Bedingungsschlüssel in IAM Richtlinien verwenden, wenn Sie Berechtigungen zum Erstellen und Aktualisieren von Jobs erteilen. Mit dieser Einstellung können Sie sicherstellen, dass Jobs oder Sitzungen nicht für die Ausführung außerhalb der gewünschten VPC Umgebung erstellt (oder aktualisiert) werden. Die VPC Einstellungsinformationen sind keine direkte Eingabe aus der CreateJob Anfrage, sondern werden aus dem Feld „Verbindungen“ des Jobs abgeleitet, das auf eine AWS Glue Verbindung.

Beispielverwendung

Erstellen Sie eine AWS Glue Netzwerkverbindung mit dem Namen "traffic-monitored-connection" mit der gewünschten VpcId „vpc-id1234", und. SubnetIds SecurityGroupIds

Geben Sie die Bedingung mit den Bedingungsschlüsseln für die Aktion CreateJob und UpdateJob in der Richtlinie an. IAM

{ "Effect": "Allow", "Action": [ "glue:CreateJob", "glue:UpdateJob" ], "Resource": [ "*" ], "Condition": { "ForAnyValue:StringLike": { "glue:VpcIds": [ "vpc-id1234" ] } } }

Sie können eine ähnliche IAM Richtlinie erstellen, um die Erstellung einer zu verbieten AWS Glue Job ohne Angabe von Verbindungsinformationen.

Sitzungen einschränken auf VPCs

<123>Um zu erzwingen, dass erstellte Sitzungen innerhalb eines bestimmten Zeitraums ausgeführt werdenVPC, schränken Sie die Rollenberechtigungen ein, indem Sie einen Deny Effekt auf die glue:CreateSession Aktion mit der Bedingung hinzufügen, dass glue:vpc-id nicht gleich vpc- ist. Beispielsweise:

"Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "StringNotEquals" : {"glue:VpcIds" : ["vpc-123"]} }

Sie können auch erzwingen, dass erstellte Sitzungen innerhalb von ausgeführt werden, VPC indem Sie einen Deny Effekt auf die glue:CreateSession Aktion mit der Bedingung hinzufügen, dass der Null ist. glue:vpc-id Beispielsweise:

{ "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Condition": { "Null": {"glue:VpcIds": true} } }, { "Effect": "Allow", "Action": [ "glue:CreateSession" ], "Resource": ["*"] }

Steuern von Richtlinien, die Einstellungen über Kontextschlüssel steuern

AWS Glue stellt für jede Rollensitzung einen Kontextschlüssel (glue:CredentialIssuingService= glue.amazonaws.com) bereit, AWS Glue stellt für den Job und den Entwickler-Endpunkt zur Verfügung. Auf diese Weise können Sie Sicherheitskontrollen für die Aktionen implementieren, die von AWS Glue Skripte. AWS Glue stellt für jede Rollensitzung einen weiteren Kontextschlüssel (glue:RoleAssumedBy=glue.amazonaws.com) bereit, wobei AWS Glue ruft im Namen des Kunden einen anderen AWS Service an (nicht über einen Job-/Dev-Endpunkt, sondern direkt über AWS Glue Dienst).

Beispielverwendung

Geben Sie die bedingte Berechtigung in einer IAM Richtlinie an und fügen Sie sie der Rolle hinzu, die von einem verwendet werden soll AWS Glue Beruf. Dadurch wird sichergestellt, dass bestimmte Aktionen erlaubt/verweigert werden, je nachdem, ob die Rollensitzung für eine AWS Glue Job-Laufzeitumgebung.

{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::confidential-bucket/*", "Condition": { "StringEquals": { "glue:CredentialIssuingService": "glue.amazonaws.com" } } }

Einer Identität die Möglichkeit verweigern, Datenvorschau-Sitzungen zu erstellen

Dieser Abschnitt enthält ein IAM Richtlinienbeispiel, mit dem einer Identität die Möglichkeit verweigert wird, Datenvorschausitzungen zu erstellen. Verknüpfen Sie diese Richtlinie mit der Identität, die unabhängig von der Rolle ist, die die Datenvorschau-Sitzung während ihrer Ausführung verwendet.

{ "Sid": "DatapreviewDeny", "Effect": "Deny", "Action": [ "glue:CreateSession" ], "Resource": [ "arn:aws:glue:*:*:session/glue-studio-datapreview*" ] }