Especificar condições: usar tags personalizadas - Amazon Relational Database Service

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" } } } ] }