A funcionalidade Tabelas do S3 fornece políticas baseadas em recurso para gerenciar o acesso aos buckets de tabela e às tabelas: políticas de bucket de tabela e políticas de tabela. Você pode usar uma política de bucket de tabela para conceder permissões de acesso à API ao nível do bucket de tabela, do namespace ou da tabela. As permissões anexadas ao bucket de tabela podem ser aplicadas a todas as tabelas no bucket ou a tabelas específicas no bucket, dependendo da definição da política. Você pode usar uma política de tabela para conceder permissões ao nível da tabela.
Quando a funcionalidade Tabelas do S3 recebe uma solicitação, primeiro ela verifica se o solicitante tem as permissões necessárias. Ela avalia todas as políticas de acesso, políticas de usuário e políticas baseadas em recurso relevantes para decidir se autoriza a solicitação (política de usuário do IAM, política de perfil do IAM, política de bucket de tabela e política de tabela). Por exemplo, se uma política de bucket de tabela concede a um usuário permissões para realizar todas as ações nas tabelas do bucket (inclusive DeleteTable
), mas uma tabela individual tiver uma política de tabela que nega a ação DeleteTable
para todos os usuários, um usuário não pode excluir a tabela.
O tópico a seguir inclui exemplos de políticas de tabela e de bucket de tabela. Para usar essas políticas, substitua os espaços reservados para entrada do usuário
por suas próprias informações.
nota
-
Toda política que concede permissões para modificar tabelas deve incluir permissões para
GetTableMetadataLocation
a fim de acessar o arquivo-raiz da tabela. Para ter mais informações, consulteGetTableMetadataLocation
. -
Sempre que você realizar uma atividade de gravação ou exclusão em uma tabela, inclua permissões para
UpdateTableMetadataLocation
na política de acesso. -
Recomendamos usar uma política de bucket de tabela para controlar o acesso às ações ao nível do bucket e uma política de tabela para controlar o acesso às ações ao nível da tabela. Nos casos em que você deseja definir o mesmo conjunto de permissões em várias tabelas, recomendamos o uso de uma política de bucket de tabela.
Exemplo 1: a política de bucket de tabela permite acesso a PutBucketMaintenanceConfiguration
para buckets em uma conta
O exemplo de política de bucket de tabela a seguir permite que o data steward
do IAM exclua objetos não referenciados de todos os buckets em uma conta ao permitir acesso a PutBucketMaintenanceConfiguration
.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account_id
:role/datasteward"
},
"Action": ["s3tables:PutTableBucketMaintenanceConfiguration”],
"Resource":"arn:aws:s3tables:region:account_id
:bucket/*”
}]
}
Exemplo 2: política de bucket de tabela para permitir acesso de leitura (SELECT) às tabelas armazenadas no namespace hr
Veja a seguir um exemplo de política de bucket de tabela permite que Jane, uma usuária do ID de Conta da AWS 123456789012
, acesse tabelas armazenadas no namespace hr
em um bucket de tabela.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Jane"
},
"Action": [
"s3tables:GetTableData",
"s3tables:GetTableMetadataLocation"
],
"Resource":{ "arn:aws:s3tables:region
:account_id
:bucket/amzn-s3-demo-bucket1
/table/*”}
"Condition": {
"StringLike": { "s3tables:namespace": "hr" }
}
]
}
Exemplo 3: política de tabela para permitir que um usuário exclua uma tabela
O exemplo a seguir é uma política de tabela que permite que o perfil do IAM data steward
exclua uma tabela.
{
"Version": "2012-10-17",
"Id": "DeleteTable",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account_id
:role/datasteward
"
},
"Action": [
"s3tables:DeleteTable",
"s3tables:UpdateTableMetadataLocation",
"s3tables:PutTableData",
"s3tables:GetTableMetadataLocation"
],
"Resource":"arn:aws:s3tables:region
:account_id
:bucket/amzn-s3-demo-bucket1
/table/tableUUID
"
}]
}