No AWS Glue, você pode controlar o acesso a recursos usando uma política do AWS Identity and Access Management (IAM). Em uma política, você usa um Nome de recurso da Amazon (ARN) para identificar o recurso a que a política se aplica. Nem todos os recursos do AWS Glue oferecem suporte a ARNs.
Tópicos
ARNs do Data Catalog
Os recursos do Data Catalog têm uma estrutura hierárquica, com catalog
como a raiz.
arn:aws:glue:
region
:account-id
:catalog
Cada conta da AWS tem um único Data Catalog em uma região da AWS com o ID da conta de 12 dígitos como o ID do catálogo. Os recursos têm ARNs exclusivos associados a eles, como exibido na tabela a seguir.
Tipo de atributo | Formato ARN |
---|---|
Catálogo |
Por exemplo: |
Banco de dados |
Por exemplo: |
Tabela |
Por exemplo: |
Função definida pelo usuário |
Por exemplo: |
Conexão |
Por exemplo: |
Sessão interativa |
Por exemplo: |
Para habilitar um controle de acesso minucioso, você pode usar esses ARNs em suas políticas do IAM e políticas de recursos para conceder e negar acesso a recursos específicos. Curingas são permitidos nas políticas. Por exemplo, o seguinte ARN corresponde a todas as tabelas no banco de dados default
.
arn:aws:glue:us-east-1:123456789012:table/default/*
Importante
Todas as operações executadas em um recurso do Data Catalog exigem permissão no recurso e em todos os ancestrais desse recurso. Por exemplo, criar uma partição para uma tabela requer permissão na tabela, no banco de dados e no catálogo em que a tabela está localizada. O exemplo a seguir mostra a permissão necessária para criar partições na tabela PrivateTable
do banco de dados PrivateDatabase
no Data Catalog.
{
"Sid": "GrantCreatePartitions",
"Effect": "Allow",
"Action": [
"glue:BatchCreatePartitions"
],
"Resource": [
"arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/PrivateTable",
"arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase",
"arn:aws:glue:us-east-1:123456789012:catalog"
]
}
Além de permissão no recurso e em todos os seus ancestrais, todas as operações de exclusão exigem permissão em todos os filhos desse recurso. Por exemplo, excluir um banco de dados requer permissão em todas as tabelas e funções definidas pelo usuário no banco de dados, além do banco de dados e no catálogo em que o banco de dados está localizado. O exemplo a seguir mostra a permissão necessária para excluir o banco de dados PrivateDatabase
no Data Catalog.
{
"Sid": "GrantDeleteDatabase",
"Effect": "Allow",
"Action": [
"glue:DeleteDatabase"
],
"Resource": [
"arn:aws:glue:us-east-1:123456789012:table/PrivateDatabase/*",
"arn:aws:glue:us-east-1:123456789012:userDefinedFunction/PrivateDatabase/*",
"arn:aws:glue:us-east-1:123456789012:database/PrivateDatabase",
"arn:aws:glue:us-east-1:123456789012:catalog"
]
}
Resumindo, as ações em recursos do Data Catalog seguem estas regras de permissão:
As ações no catálogo requerem permissão somente no catálogo.
As ações em um banco de dados requerem permissão no banco de dados e no catálogo.
A exclusão de ações em um banco de dados requer permissão no banco de dados e no catálogo e em todas as tabelas e funções definidas pelo usuário no banco de dados.
As ações em uma tabela, partição ou versão de tabela requerem permissão na tabela, no banco de dados e no catálogo.
As ações em uma função definida pelo usuário requerem permissão na função definida pelo usuário, no banco de dados e no catálogo.
As ações em uma conexão requerem permissão na conexão e no catálogo.
ARNs de objetos fora do catálogo no AWS Glue
Alguns recursos do AWS Glue permitem permissões no nível do recurso para controlar o acesso usando um ARN. Você pode usar esses ARNs em suas políticas do IAM para permitir um controle de acesso refinado. A tabela a seguir lista os recursos que podem conter ARNs de recursos.
Tipo de atributo | Formato ARN |
---|---|
Crawler |
Por exemplo: |
Trabalho |
Por exemplo: |
Trigger |
Por exemplo: |
Endpoint de desenvolvimento |
Por exemplo: |
Transformação de machine learning |
Por exemplo: |
Controle de acesso para operações singulares da API fora do catálogo do AWS Glue
As operações singulares de API fora do catálogo do AWS Glue atuam em um único item (endpoint de desenvolvimento). Os exemplos são GetDevEndpoint
, CreateUpdateDevEndpoint
e UpdateDevEndpoint
. Para essas operações, uma política deve colocar o nome da API no bloco "action"
e o ARN do recurso no bloco "resource"
.
Suponha que você queira permitir que um usuário chame a operação GetDevEndpoint
. A política a seguir concede as permissões mínimas necessárias para um endpoint chamado myDevEndpoint-1
.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "MinimumPermissions",
"Effect": "Allow",
"Action": "glue:GetDevEndpoint",
"Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-1"
}
]
}
A política a seguir permite o acesso UpdateDevEndpoint
a recursos que correspondem a myDevEndpoint-
com um caractere curinga (*).
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PermissionWithWildcard",
"Effect": "Allow",
"Action": "glue:UpdateDevEndpoint",
"Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/myDevEndpoint-*"
}
]
}
Você pode combinar as duas políticas, como no exemplo a seguir. Você pode ver EntityNotFoundException
para qualquer endpoint de desenvolvimento cujo nome começa com A
. No entanto, um erro de acesso negado retorna quando você tenta acessar outros endpoints de desenvolvimento.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CombinedPermissions",
"Effect": "Allow",
"Action": [
"glue:UpdateDevEndpoint",
"glue:GetDevEndpoint"
],
"Resource": "arn:aws:glue:us-east-1:123456789012:devEndpoint/A*"
}
]
}
Controle de acesso para operações da API fora do catálogo do AWS Glue que recuperam vários itens
Algumas operações da API do AWS Glue recuperam vários itens (como vários endpoints de desenvolvimento); por exemplo, GetDevEndpoints
. Para essa operação, você pode especificar apenas um recurso de caractere curinga (*), e não ARNs específicos.
Por exemplo, para incluir GetDevEndpoints
na política, o recurso deve estar projetado para o curinga (*). As operações singulares (GetDevEndpoint
, CreateDevEndpoint
e DeleteDevendpoint
) também têm escopo para todos (*) os recursos no exemplo.
{
"Sid": "PluralAPIIncluded",
"Effect": "Allow",
"Action": [
"glue:GetDevEndpoints",
"glue:GetDevEndpoint",
"glue:CreateDevEndpoint",
"glue:UpdateDevEndpoint"
],
"Resource": [
"*"
]
}
Controle de acesso para operações da API BatchGet fora do catálogo do AWS Glue
Algumas operações da API do AWS Glue recuperam vários itens (como vários endpoints de desenvolvimento); por exemplo, BatchGetDevEndpoints
. Para essa operação, você pode especificar um ARN para limitar o escopo dos recursos que podem ser acessados.
Por exemplo, para permitir o acesso a um endpoint de desenvolvimento específico, inclua BatchGetDevEndpoints
na política com o ARN do seu recurso.
{
"Sid": "BatchGetAPIIncluded",
"Effect": "Allow",
"Action": [
"glue:BatchGetDevEndpoints"
],
"Resource": [
"arn:aws:glue:us-east-1:123456789012:devEndpoint/de1"
]
}
Com essa política, você pode acessar com êxito o endpoint de desenvolvimento chamado de1
. No entanto, se você tentar acessar o endpoint de desenvolvimento chamado de2
, um erro será retornado.
An error occurred (AccessDeniedException) when calling the BatchGetDevEndpoints operation: No access to any requested resource.
Importante
Para abordagens alternativas de configuração de políticas do IAM, como usar operações da API List
e BatchGet
, consulte Exemplos de políticas baseadas em identidade para Glue AWS.