Tagbasierte IAM-Zugriffssteuerungsrichtlinien verwenden - Amazon Athena

Tagbasierte IAM-Zugriffssteuerungsrichtlinien verwenden

Mit Tags können Sie eine IAM-Richtlinie schreiben, die den Condition-Block enthält, um den Zugriff auf eine Ressource basierend auf ihren Tags zu steuern. Dieser Abschnitt enthält Beispiele für Tag-Richtlinien für Arbeitsgruppen und Datenkatalogressourcen.

Tag-Richtlinienbeispiele für Arbeitsgruppen

Die folgende IAM-Richtlinie ermöglicht Ihnen das Ausführen von Abfragen und die Interaktion mit Tags für die Arbeitsgruppe mit dem Namen workgroupA:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListWorkGroups", "athena:ListEngineVersions", "athena:ListDataCatalogs", "athena:ListDatabases", "athena:GetDatabase", "athena:ListTableMetadata", "athena:GetTableMetadata" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "athena:GetWorkGroup", "athena:TagResource", "athena:UntagResource", "athena:ListTagsForResource", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:BatchGetQueryExecution", "athena:ListQueryExecutions", "athena:StopQueryExecution", "athena:GetQueryResults", "athena:GetQueryResultsStream", "athena:CreateNamedQuery", "athena:GetNamedQuery", "athena:BatchGetNamedQuery", "athena:ListNamedQueries", "athena:DeleteNamedQuery", "athena:CreatePreparedStatement", "athena:GetPreparedStatement", "athena:ListPreparedStatements", "athena:UpdatePreparedStatement", "athena:DeletePreparedStatement" ], "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA" } ] }

Tags, die einer bestehenden Ressource, beispielsweise einer Arbeitsgruppe, zugeordnet sind, werden als Ressourcen-Tags bezeichnet. Mit Ressourcen-Tags können Sie Richtlinienblöcke wie die folgenden schreiben, die die aufgelisteten Aktionen für jede Arbeitsgruppe ablehnen, die mit einem Schlüssel-Wert-Paar wie stack, production gekennzeichnet sind.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "athena:GetWorkGroup", "athena:UpdateWorkGroup", "athena:DeleteWorkGroup", "athena:TagResource", "athena:UntagResource", "athena:ListTagsForResource", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:BatchGetQueryExecution", "athena:ListQueryExecutions", "athena:StopQueryExecution", "athena:GetQueryResults", "athena:GetQueryResultsStream", "athena:CreateNamedQuery", "athena:GetNamedQuery", "athena:BatchGetNamedQuery", "athena:ListNamedQueries", "athena:DeleteNamedQuery", "athena:CreatePreparedStatement", "athena:GetPreparedStatement", "athena:ListPreparedStatements", "athena:UpdatePreparedStatement", "athena:DeletePreparedStatement" ], "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/*", "Condition": { "StringEquals": { "aws:ResourceTag/stack": "production" } } } ] }

Tags, die als Parameter an Operationen übergeben werden, die Tags ändern (z. B. TagResource, UntagResource oder CreateWorkGroup mit Tags) werden als Anforderungs-Tags bezeichnet. Der folgende Beispielrichtlinienblock erlaubt die CreateWorkGroup-Operation nur, wenn eines der übergebenen Tags den Schlüssel costcenter und den Wert 1, 2 oder 3 hat.

Anmerkung

Wenn Sie zulassen möchten, dass eine IAM-Rolle Tags als Teil einer CreateWorkGroup-Operation weitergibt, stellen Sie sicher, dass Sie der Rolle Berechtigungen für die TagResource- und CreateWorkGroup-Aktionen erteilen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:CreateWorkGroup", "athena:TagResource" ], "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/*", "Condition": { "StringEquals": { "aws:RequestTag/costcenter": [ "1", "2", "3" ] } } } ] }

Tag-Richtlinienbeispiele für Datenkataloge

Mit der folgenden IAM-Richtlinie können Sie mit Tags für den Datenkatalog mit dem Namen interagieren datacatalogA:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:ListWorkGroups", "athena:ListEngineVersions", "athena:ListDataCatalogs", "athena:ListDatabases", "athena:GetDatabase", "athena:ListTableMetadata", "athena:GetTableMetadata" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "athena:GetWorkGroup", "athena:TagResource", "athena:UntagResource", "athena:ListTagsForResource", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:BatchGetQueryExecution", "athena:ListQueryExecutions", "athena:StopQueryExecution", "athena:GetQueryResults", "athena:GetQueryResultsStream", "athena:CreateNamedQuery", "athena:GetNamedQuery", "athena:BatchGetNamedQuery", "athena:ListNamedQueries", "athena:DeleteNamedQuery" ], "Resource": [ "arn:aws:athena:us-east-1:123456789012:workgroup/*" ] }, { "Effect": "Allow", "Action": [ "athena:CreateDataCatalog", "athena:GetDataCatalog", "athena:UpdateDataCatalog", "athena:DeleteDataCatalog", "athena:ListDatabases", "athena:GetDatabase", "athena:ListTableMetadata", "athena:GetTableMetadata", "athena:TagResource", "athena:UntagResource", "athena:ListTagsForResource" ], "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA" } ] }

Sie können Ressourcen-Tags verwenden, um Richtlinienblöcke zu schreiben, die bestimmte Aktionen in Datenkatalogen verweigern, die mit bestimmten Tag-Schlüssel-Wert-Paaren markiert sind. In der folgenden Beispielrichtlinie werden Aktionen für Datenkataloge verweigert, die das Tag-Schlüssel-Wert-Paar stack, production haben.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "athena:CreateDataCatalog", "athena:GetDataCatalog", "athena:UpdateDataCatalog", "athena:DeleteDataCatalog", "athena:GetDatabase", "athena:ListDatabases", "athena:GetTableMetadata", "athena:ListTableMetadata", "athena:StartQueryExecution", "athena:TagResource", "athena:UntagResource", "athena:ListTagsForResource" ], "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/*", "Condition": { "StringEquals": { "aws:ResourceTag/stack": "production" } } } ] }

Tags, die als Parameter an Operationen übergeben werden, die Tags ändern (z. B. TagResource, UntagResource oder CreateDataCatalog mit Tags) werden als Anforderungs-Tags bezeichnet. Der folgende Beispielrichtlinienblock erlaubt die CreateDataCatalog-Operation nur, wenn eines der übergebenen Tags den Schlüssel costcenter und den Wert 1, 2 oder 3 hat.

Anmerkung

Wenn Sie zulassen möchten, dass eine IAM-Rolle Tags als Teil einer CreateDataCatalog-Operation weitergibt, stellen Sie sicher, dass Sie der Rolle Berechtigungen für die TagResource- und CreateDataCatalog-Aktionen erteilen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:CreateDataCatalog", "athena:TagResource" ], "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/*", "Condition": { "StringEquals": { "aws:RequestTag/costcenter": [ "1", "2", "3" ] } } } ] }