Especificar condições: usar tags personalizadas
O Amazon RDS oferece suporte para especificar condições em uma política do IAM usando tags personalizadas.
Por exemplo, suponha que você adicione uma tag chamada environment
às suas instâncias de banco de dados com valores como beta
, staging
, production
e assim por diante. Se fizer isso, você poderá criar uma política que restrinja determinados usuários a instâncias de banco de dados com base no valor da tag environment
.
nota
Os identificadores de tags personalizados diferenciam maiúsculas de minúsculas.
A tabela a seguir lista os identificadores de tags do RDS que você pode usar em um elemento Condition
.
Identificador de tag do RDS | Aplica-se a |
---|---|
db-tag |
Instâncias de bancos de dados, incluindo réplicas de leitura |
snapshot-tag |
DB snapshots |
ri-tag |
Instâncias de bancos de dados reservadas |
og-tag |
Grupos de opções de banco de dados |
pg-tag |
Grupos de parâmetros do banco de dados |
subgrp-tag |
Grupos de sub-redes de banco de dados |
es-tag |
Assinaturas de eventos |
cluster-tag |
clusters de banco de dados |
cluster-pg-tag |
Grupos de parâmetros de cluster de banco de dados |
cluster-snapshot-tag |
Snapshots de cluster de banco de dados |
A sintaxe de uma condição de tag personalizada é a seguinte:
"Condition":{"StringEquals":{"rds:
rds-tag-identifier
/tag-name
":
["value
"]} }
Por exemplo, o seguinte elemento Condition
se aplica a instâncias de banco de dados com uma tag environment
e um valor de tag de production
.
"Condition":{"StringEquals":{"rds:db-tag/
environment
": ["production
"]} }
Para obter informações sobre como criar tags, consulte Marcar recursos do Amazon RDS.
Importante
Se você gerenciar o acesso aos recursos do RDS usando tags, recomendamos proteger o acesso às tags para os seus recursos do RDS. Você pode gerenciar o acesso a tags, criando políticas para as ações AddTagsToResource
e RemoveTagsFromResource
. Por exemplo, a seguinte política nega aos usuários a capacidade de adicionar ou remover tags para todos os recursos. Você pode então criar políticas para permitir que usuários específicos adicionem ou removam tags.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyTagUpdates", "Effect":"Deny", "Action":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"*" } ] }
Para obter uma lista de ações do Amazon RDS, consulte Ações definidas pelo Amazon RDS na Referência de autorização do serviço.
Políticas de exemplo: usar tags personalizadas
Os seguintes exemplos mostram como você pode usar tags personalizadas em políticas de permissões do IAM do Amazon RDS. Para obter mais informações sobre como adicionar tags a um recurso do Amazon RDS, consulte Nomes de recurso da Amazon (ARNs) no Amazon RDS.
nota
Todos os exemplos usam a região us-west-2 e contêm IDs de conta fictícios.
Exemplo 1: conceder permissão para ações em um recurso com uma tag específica com dois valores diferentes
A política a seguir concede permissão para realizar a operação de API CreateDBSnapshot
em instâncias de banco de dados com a etiqueta stage
definida como development
ou test
.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAnySnapshotName", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:snapshot:*" }, { "Sid":"AllowDevTestToCreateSnapshot", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }
A política a seguir concede permissão para realizar a operação de API ModifyDBInstance
em instâncias de banco de dados com a etiqueta stage
definida como development
ou test
.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowChangingParameterOptionSecurityGroups", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":" [ "arn:aws:rds:*:123456789012:pg:*", "arn:aws:rds:*:123456789012:secgrp:*", "arn:aws:rds:*:123456789012:og:*" ] }, { "Sid":"AllowDevTestToModifyInstance", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }
Exemplo 2: negar explicitamente a permissão para criar uma instância de banco de dados que usa grupos de parâmetros de banco de dados especificados
A seguinte política nega explicitamente a permissão para criar uma instância de banco de dados que usa grupos de parâmetros de banco de dados com valores de tag específicos. Você poderá aplicar essa política se precisar que um grupo de parâmetros de banco de dados específico criado pelo cliente sempre seja usado ao criar instâncias de bancos de dados. As políticas que utilizam Deny
são mais frequentemente usadas para restringir o acesso que foi concedido por uma política mais ampla.
A negação explícita da permissão substitui quaisquer outras permissões concedidas. Isso garante que as identidades não obtenham acidentalmente permissão que você nunca deseja conceder.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyProductionCreate", "Effect":"Deny", "Action":"rds:CreateDBInstance", "Resource":"arn:aws:rds:*:123456789012:pg:*", "Condition":{ "StringEquals":{ "rds:pg-tag/usage":"prod" } } } ] }
Exemplo 3: conceder permissão para executar ações em uma instância de banco de dados com um nome de instância prefixado com um nome de usuário
A seguinte política permite chamar qualquer API (exceto para AddTagsToResource
ou RemoveTagsFromResource
) em uma instância de banco de dados que tem um nome prefixado com o nome do usuário e que tem uma tag stage
igual a devo
ou sem tag stage
.
A linha Resource
na política identifica um recurso pelo seu Nome de Recurso Amazon (ARN). Para obter mais informações sobre como usar ARNs com recursos do Amazon RDS, consulte Nomes de recurso da Amazon (ARNs) no Amazon RDS.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowFullDevAccessNoTags", "Effect":"Allow", "NotAction":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"arn:aws:rds:*:123456789012:db:${aws:username}*", "Condition":{ "StringEqualsIfExists":{ "rds:db-tag/stage":"devo" } } } ] }