Especificación de condiciones: uso de etiquetas personalizadas
Amazon RDS admite la especificación de condiciones en una política de IAM que utiliza etiquetas personalizadas.
Por ejemplo, suponga que añade una etiqueta con el nombre environment
a sus instancias de base de datos con valores como beta
, staging
, production
, etc. Si lo hace, puede crear una política que restrinja a ciertos usuarios en instancias de bases de datos basándose en el valor de la etiqueta environment
.
nota
Los identificadores de etiquetas personalizados distinguen entre mayúsculas y minúsculas.
En la tabla siguiente, se enumeran los identificadores de etiqueta de RDS que puede usar en un elemento Condition
.
Identificador de etiqueta de RDS | Se aplica a |
---|---|
db-tag |
Instancias de base de datos, incluidas las réplicas de lectura |
snapshot-tag |
Instantáneas de base de datos |
ri-tag |
Instancias de base de datos reservadas |
og-tag |
Grupos de opciones de base de datos |
pg-tag |
Grupos de parámetros de base de datos |
subgrp-tag |
Grupos de subred de base de datos |
es-tag |
Suscripciones de eventos |
cluster-tag |
Clústeres de base de datos |
cluster-pg-tag |
Grupos de parámetros de clúster de bases de datos |
cluster-snapshot-tag |
Instantáneas de clúster de bases de datos |
La sintaxis de una condición de etiqueta personalizada es la siguiente:
"Condition":{"StringEquals":{"rds:
rds-tag-identifier
/tag-name
":
["value
"]} }
Por ejemplo, el elemento Condition
siguiente se aplica a instancias de base de datos con una etiqueta llamada environment
y un valor de etiqueta production
.
"Condition":{"StringEquals":{"rds:db-tag/
environment
": ["production
"]} }
Para obtener información acerca de la creación etiquetas, consulte Etiquetado de los recursos de y Amazon RDS.
importante
Si administra el acceso a sus recursos de RDS mediante el etiquetado, recomendamos que proteja el acceso a las etiquetas. Puede administrar el acceso a etiquetas creando políticas para las acciones AddTagsToResource
y RemoveTagsFromResource
. Por ejemplo, la política siguiente deniega a los usuarios la posibilidad de agregar o quitar etiquetas para todos los recursos. A continuación, puede crear políticas para permitir que usuarios específicos agreguen o quiten etiquetas.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyTagUpdates", "Effect":"Deny", "Action":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"*" } ] }
Para ver una lista de las acciones de Amazon RDS, consulte Acciones definidas por Amazon RDS en la referencia de autorizaciones de servicio.
Políticas de ejemplo: uso de etiquetas personalizadas
Los siguientes ejemplos muestran cómo puede usar etiquetas personalizadas en las políticas de permisos de IAM para Amazon RDS. Para obtener más información sobre cómo agregar etiquetas a un recurso de Amazon RDS, consulte Nombres de recursos de Amazon (ARN) en Amazon RDS.
nota
Todos los ejemplos utilizan la región us-west-2 y contienen identificadores de cuenta ficticios.
Ejemplo 1: conceda permiso para acciones en un recurso con una etiqueta específica con dos valores diferentes.
La siguiente política da permiso para aplicar la operación de API CreateDBSnapshot
en instancias de base de datos con la etiqueta stage
establecida en development
o 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" ] } } } ] }
La siguiente política da permiso para aplicar la operación de API ModifyDBInstance
en instancias de base de datos con la etiqueta stage
establecida en development
o 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" ] } } } ] }
Ejemplo 2: deniegue explícitamente permiso para crear una instancia de base de datos que utilice grupos de parámetros de base de datos especificados.
La siguiente política deniega explícitamente permiso para crear una instancia de base de datos que utilice grupos de parámetros de base de datos con valores de etiqueta específicos. Podría aplicar esta política si necesita que se utilice siempre un grupo de parámetros de base de datos específico, creado por el cliente, al crear instancias de base de datos. Las políticas que utilizan Deny
suelen aplicarse para restringir el acceso concedido por una política más amplia.
Al denegarse permiso explícitamente se sustituye a cualquier otro permiso concedido. Esto garantiza que las identidades no obtengan accidentalmente permisos que el usuario no desee conceder nunca.
{ "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" } } } ] }
Ejemplo 3: conceda permiso para acciones en una instancia de base de datos con un nombre de instancia cuyo prefijo sea un nombre de usuario.
La siguiente política da permiso para llamar a cualquier API (salvo AddTagsToResource
o RemoveTagsFromResource
) en una instancia de base de datos cuyo prefijo sea un nombre de usuario y que tenga una etiqueta llamada stage
igual a devo
o que no tenga ninguna etiqueta llamada stage
.
La línea Resource
en la política identifica un recurso por su nombre de recurso de Amazon (ARN). Para obtener más información sobre el uso de ARN con recursos de Amazon RDS, consulte Nombres de recursos de Amazon (ARN) en 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" } } } ] }