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.
Themen
- Bewährte Methoden für Richtlinien
- Berechtigungen auf Ressourcenebene gelten nur für bestimmte AWS Glue objects
- Verwenden der AWS Glue-Konsole
- Gewähren der Berechtigung zur Anzeige der eigenen Berechtigungen für Benutzer
- Nur-Leseberechtigung für eine Tabelle erteilen
- Filtern Sie Tabellen nach GetTables Berechtigungen
- Vollständiger Zugriff auf eine Tabelle und alle Partitionen gewähren
- Steuerung des Zugriffs über Namenspräfix und explizites Verweigern
- Zugriffssteuerung gewähren mit Tags
- Zugriff mit Tags verweigern
- Verwenden Sie Tags bei Listen- und API Batch-Operationen
- Einstellungen über Bedingungsschlüssel oder Kontextschlüssel steuern
- Einer Identität die Möglichkeit verweigern, Datenvorschau-Sitzungen zu erstellen
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
- oder ConsoleAccess
AWS verwaltete Richtlinie hinzu. Weitere Informationen finden Sie im Benutzerhandbuch unter Hinzufügen von Berechtigungen für einen IAM Benutzer.ReadOnly
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
, GetDevEndpoints
GetJobs
, 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:
-
Hinzufügen von Tags zu Ihren Crawlern, Entwicklungsendpunkten, Aufträgen und Auslösern.
-
Verweigern Sie Benutzern den Zugriff auf
Get
API Operationen wieGetCrawlers
GetDevEndponts
,GetJobs
, undGetTriggers
. -
Damit Benutzer herausfinden können, auf welche markierten Ressourcen sie Zugriff haben, gewähren Sie Benutzern Zugriff auf
List
API Operationen wieListCrawlers
ListDevEndponts
,ListJobs
, undListTriggers
. -
Verweigern Sie dem Benutzer den Zugriff auf AWS Glue TaggingAPIs, z. B.
TagResource
undUntagResource
. -
Erlauben Sie Benutzern den Zugriff auf Ressourcendetails mit
BatchGet
API Operationen wieBatchGetCrawlers
,BatchGetDevEndponts
BatchGetJobs
, 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:VpcIds
glue: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*" ] }