As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Exemplos de política baseada em recursos para o AWS Glue
Esta seção contém exemplos de políticas baseadas em recursos, incluindo políticas que concedem acesso entre contas.
Os exemplos a seguir usam a AWS Command Line Interface (AWS CLI) para interagir com as operações de API do serviço AWS Glue. Você pode executar as mesmas operações no console do AWS Glue ou usar um dos SDKs da AWS.
Importante
Ao alterar uma política de recurso do AWS Glue, você pode acidentalmente revogar permissões para usuários do AWS Glue existentes em sua conta e provocar interrupções inesperadas. Antes de fazer as alterações, tente estes exemplos apenas em contas de desenvolvimento ou de teste e garanta que elas não interrompam nenhum fluxo de trabalho existente.
Tópicos
Considerações sobre o uso de políticas baseadas em recurso com o AWS Glue
nota
As políticas do IAM e uma política de recursos do AWS Glue levam alguns segundos para serem propagadas. Depois de anexar uma nova política, você pode perceber que a política antiga ainda está em vigor até que a nova política tenha sido propagada pelo sistema.
Você usa um documento de política escrito em formato JSON para criar ou modificar uma política de recurso. A sintaxe da política é a mesma que a de uma política do IAM baseada em identidade (consulte Referência de política JSON do IAM), com as seguintes exceções:
-
Um bloco
"Principal"
ou"NotPrincipal"
é necessário para cada declaração da política. -
O
"Principal"
ou o"NotPrincipal"
devem identificar as entidades principais válidos existentes. Padrões de curinga (comoarn:aws:iam::
) não são permitidos.account-id
:user/* -
O bloco
"Resource"
da política exige que todos os ARNs de recursos correspondam à seguinte sintaxe de expressão regular (em que o primeiro%s
é aregião
e o segundo%s
é oaccount-id
):*arn:aws:glue:%s:%s:(\*|[a-zA-Z\*]+\/?.*)
Por exemplo,
arn:aws:glue:us-west-2:
eaccount-id
:*arn:aws:glue:us-west-2:
são permitidos, masaccount-id
:database/default*
não é permitido. -
Ao contrário das políticas baseadas em identidade, a política de recurso do AWS Glue deve conter apenas os nomes dos recursos da Amazon (ARN) que pertencem ao catálogo ao qual a política está anexada. Esses ARNs sempre começam com
arn:aws:glue:
. -
Uma política não pode impedir que a identidade criada por ela crie ou modifique mais a política.
-
Um documento JSON de política de recurso não pode exceder 10 KB.
Usar uma política de recurso para controlar o acesso na mesma conta
Neste exemplo, um usuário administrador na conta A cria uma política de recursos que concede à usuária do IAM Alice
acesso total ao catálogo na conta A. Alice não tem nenhuma política do IAM anexada.
Para fazer isso, o usuário administrador executa o comando da AWS CLI a seguir.
# Run as admin of Account A $ aws glue put-resource-policy --profile
administrator-name
--region us-west-2 --policy-in-json '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id
:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id
:*" ] } ] }'
Em vez de inserir o documento de política JSON como parte do comando da AWS CLI, você pode salvar um documento de política em um arquivo e fazer referência ao caminho do arquivo no comando da AWS CLI, com o prefixo file://
. Este é um exemplo de como é possível fazer isso:
$ echo '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::
account-A-id
:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id
:*" ] } ] }' > /temp/policy.json $ aws glue put-resource-policy --profile admin1 \ --region us-west-2 --policy-in-json file:///temp/policy.json
Depois que essa política de recurso tiver sido propagada, Alice poderá acessar todos os recursos do AWS Glue na Conta A, conforme a seguir.
# Run as user Alice $ aws glue create-database --profile alice --region us-west-2 --database-input '{ "Name": "new_database", "Description": "A new database created by Alice", "LocationUri": "s3://my-bucket" }' $ aws glue get-table --profile alice --region us-west-2 --database-name "default" --table-name "tbl1"}
Em resposta à chamada get-table
de Alice, o serviço AWS Glue retorna o seguinte:
{ "Table": { "Name": "tbl1", "PartitionKeys": [], "StorageDescriptor": { ...... }, ...... } }