Especificación de condiciones: uso de etiquetas personalizadas - Amazon Relational Database Service

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