Uso de condiciones de las políticas de IAM para control de acceso preciso - Amazon Route 53

Uso de condiciones de las políticas de IAM para control de acceso preciso

En Route 53, puede especificar las condiciones al conceder permisos utilizando la política de IAM (consulte Control de acceso). Por ejemplo, puede hacer lo siguiente:

  • Conceda permisos para permitir el acceso a un único conjunto de registros de recursos.

  • Conceda permisos para que los usuarios puedan acceder a todos los conjuntos de registros de recursos de un tipo de registro de DNS específico en una zona alojada, por ejemplo, los registros A y AAAA.

  • Conceda permisos para que los usuarios puedan acceder a un conjunto de registros de recursos en el que su nombre contenga una cadena específica.

  • Conceda permisos para que los usuarios puedan efectuar solo un subconjunto de acciones CREATE | UPSERT | DELETE en la consola de Route 53, o cuando se utiliza la API ChangeResourceRecordSets.

  • Otorgue permisos para permitir a los usuarios asociar o disociar zonas alojadas privadas de una VPC determinada.

  • Otorgue permisos para permitir a los usuarios enumerar las zonas alojadas asociadas a una VPC determinada.

  • Otorgue permisos para permitir a los usuarios acceder a crear una nueva zona alojada privada y asociarla a una VPC determinada.

  • Otorgue permisos para permitir a los usuarios crear o eliminar una autorización de asociación de VPC.

También puede crear permisos que combinen cualquiera de los permisos granulares.

Normalización de los valores clave de la condición de Route 53

Los valores que ingrese para las condiciones de la política deben formatearse o normalizarse de la siguiente manera:

Para route53:ChangeResourceRecordSetsNormalizedRecordNames:

  • Todas las letras deben estar en minúsculas.

  • El nombre de DNS debe estar sin el punto final.

  • Los caracteres que no sean a-z, 0-9, - (guion), _ (guion bajo) y . (punto, como delimitador entre etiquetas) deben utilizar códigos de escape con el formato \código octal de tres dígitos. Por ejemplo, \052 es el código octal del carácter *.

Para route53:ChangeResourceRecordSetsActions, el valor puede ser cualquiera de los siguientes y debe estar en mayúscula:

  • CREATE

  • UPSERT

  • DELETE

En route53:ChangeResourceRecordSetsRecordTypes:

  • El valor debe estar en mayúsculas y puede ser cualquiera de los tipos de registro de DNS compatibles con Route 53. Para obtener más información, consulte Tipos de registros de DNS admitidos.

En route53:VPCs:

  • El formato del valor debe ser VPCId=<vpc-id>,VPCRegion=<region>.

  • El valor de <vpc-id> y <region> debe expresarse en letras minúsculas, como VPCId=vpc-123abc y VPCRegion=us-east-1.

  • Las claves de contexto y los valores distinguen entre mayúsculas y minúsculas.

importante

Para que sus permisos permitan o restrinjan las acciones que quiera, debe seguir estas convenciones. Esta clave de condición solo acepta los elementos VPCId y VPCRegion; otros recursos de AWS, como Cuenta de AWS, no son admisibles.

Puede utilizar Access Analyzer o Policy Simulator de la Guía del usuario de IAM para validar que la política conceda o restrinja los permisos según lo previsto. Para validar los permisos, también puede aplicar una política de IAM a un usuario o rol de prueba para llevar a cabo las operaciones de Route 53.

Especificación de condiciones: uso de claves de condición

AWS proporciona un conjunto de claves de condición predefinidas (las claves de condición generales de AWS), para todos los servicios de AWS que admiten IAM para el control de acceso. Por ejemplo, puede usar la clave de condición aws:SourceIp para comprobar la dirección IP del solicitante antes de permitir que se lleve a cabo cualquier acción. Para obtener más información y una lista con las claves generales de AWS, consulte Available Keys for Conditions (Claves disponibles para las condiciones) en la Guía del usuario de IAM.

nota

Route 53 no admite claves de condición basadas en etiquetas.

En la siguiente tabla se muestran las claves de condición específicas del servicio Route 53 que se aplican a Route 53.

Clave de condición de Route 53 Operaciones de la API Tipo de valor Descripción
route53:ChangeResourceRecordSetsNormalizedRecordNames

ChangeResourceRecordSets

Multivalor

Representa una lista de nombres de registros de DNS en la solicitud de ChangeResourceRecordSets. Para obtener el comportamiento esperado, los nombres de DNS de la política de IAM se deben normalizar de la siguiente manera:

  • Todas las letras deben estar en minúsculas.

  • El nombre de DNS debe estar sin el punto final.

  • Los caracteres que no sean de la A a la Z, del 0 al 9, - (guion), _ (guion bajo) y . (punto, como delimitador entre etiquetas) deben utilizar códigos de escape con el formato \código octal de tres dígitos.

route53:ChangeResourceRecordSetsRecordTypes

ChangeResourceRecordSets

Multivalor

Representa una lista de tipos de registros de DNS en la solicitud de ChangeResourceRecordSets.

ChangeResourceRecordSetsRecordTypes puede ser cualquiera de los tipos de registros de DNS compatibles con Route 53. Para obtener más información, consulte Tipos de registros de DNS admitidos. En la política, todo se debe escribir en mayúsculas.

route53:ChangeResourceRecordSetsActions

ChangeResourceRecordSets

Multivalor

Representa una lista de acciones en la solicitud de ChangeResourceRecordSets.

ChangeResourceRecordSetsActions puede ser cualquiera de los siguientes valores (debe estar en mayúscula):

  • CREATE

  • UPSERT

  • DELETE

route53:VPCs

AssociateVPCWithHostedZone

DisassociateVPCFromHostedZone

ListHostedZonesByVPC

CreateHostedZone

CreateVPCAssociationAuthorization

DeleteVPCAssociationAuthorization

Multivalor

Representación de una lista de VPC en la solicitud de AssociateVPCWithHostedZone, DisassociateVPCFromHostedZone, ListHostedZonesByVPC, CreateHostedZone, CreateVPCAssociationAuthorization y DeleteVPCAssociationAuthorization con el formato de “VPCId=<vpc-id>,VPCRegion=<region>

Ejemplos de políticas: uso de condiciones para el acceso preciso

Cada uno de los ejemplos de esta sección establece en la cláusula Effect el valor Allow y especifica solamente las acciones, los recursos y los parámetros que se permiten. Únicamente se permite el acceso a aquello que se indica explícitamente en la política de IAM.

En algunos casos, se pueden modificar estas políticas de tal forma que se basen en la denegación (en cuyo caso, se establecería la cláusula Effect en Allow y se invertiría toda la lógica de la política). Sin embargo, recomendamos evitar el uso de políticas basadas en la denegación, ya que son difíciles de escribir correctamente en comparación con las políticas basadas el permiso. Esto es especialmente cierto para Route 53 debido a la normalización del texto que se requiere.

Concesión de permisos que limitan el acceso a los registros de DNS con nombres específicos

La siguiente política de permisos otorga permisos que permiten acciones de ChangeResourceRecordSets en la zona alojada Z12345 para ejemplo.com. y marketing.ejemplo.com. Utiliza la clave de condición route53:ChangeResourceRecordSetsNormalizedRecordNames para limitar las acciones del usuario solo en los registros que coincidan con los nombres especificados.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["example.com", "marketing.example.com"] } } } ] }

ForAllValues:StringEquals es un operador de condición de IAM que se aplica a claves con varios valores. La condición de la política anterior permitirá la operación solo cuando todos los cambios en ChangeResourceRecordSets tengan el nombre de DNS example.com. Para obtener más información, consulte IAM condition operators (Operadores de condición de IAM) y IAM condition with multiple keys or values (Condición de IAM con varias claves o valores) en la Guía del usuario de IAM.

Para implementar el permiso que hace coincidir nombres con ciertos sufijos, puede usar el comodín de IAM (*) en la política con el operador de condición StringLike o StringNotLike. La siguiente política permitirá la operación cuando todos los cambios en la operación ChangeResourceRecordSets tengan nombres de DNS que terminen en “-beta.example.com”.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringLike":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["*-beta.example.com"] } } } ] }
nota

El comodín de IAM no es el mismo que el comodín del nombre de dominio. Consulte el siguiente ejemplo para saber cómo utilizar el comodín con un nombre de dominio.

Concesión de permisos que limiten el acceso a los registros de DNS que coincidan con un nombre de dominio que tenga un comodín

La siguiente política de permisos concede permisos que autorizan acciones ChangeResourceRecordSets en la zona alojada Z12345 para example.com. Utiliza la clave de condición route53:ChangeResourceRecordSetsNormalizedRecordNames para limitar las acciones del usuario solo a los registros que coincidan con *.example.com.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["\\052.example.com"] } } } ] }

\052 es el código octal del carácter * del nombre de DNS, y \ en \052 es un carácter de escape que significa \\ para seguir la sintaxis JSON.

Concesión de permisos que limiten el acceso a los registros de DNS específicos

La siguiente política de permisos concede permisos que autorizan acciones ChangeResourceRecordSets en la zona alojada Z12345 para example.com. Utiliza la combinación de tres claves de condición para limitar las acciones del usuario y permitir solo la creación o edición de registros de DNS con un nombre y un tipo de DNS determinados.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["example.com"], "route53:ChangeResourceRecordSetsRecordTypes": ["MX"], "route53:ChangeResourceRecordSetsActions": ["CREATE", "UPSERT"] } } } ] }
Concesión de permisos que limiten el acceso a la creación y edición solo de los tipos de registros de DNS especificados

La siguiente política de permisos concede permisos que autorizan acciones ChangeResourceRecordSets en la zona alojada Z12345 para example.com. Utiliza la clave de condición route53:ChangeResourceRecordSetsRecordTypes para limitar las acciones del usuario solo en los registros que coincidan con los tipos especificados (A y AAAA).

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsRecordTypes": ["A", "AAAA"] } } } ] }
Otorgamiento de permisos que especifiquen la VPC en la que la entidad principal de IAM puede operar

La siguiente política de permisos otorga permisos que permiten acciones AssociateVPCWithHostedZone, DisassociateVPCFromHostedZone, ListHostedZonesByVPC, CreateHostedZone, CreateVPCAssociationAuthorization y DeleteVPCAssociationAuthorization en la VPC especificada por el vpc-id.

importante

El formato del valor de condición debe ser VPCId=<vpc-id>,VPCRegion=<region>. Si especifica un ARN de VPC en el valor de condición, la clave de condición no surtirá efecto.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "route53:*" ], "Resource": [ "*" ], "Condition": { "StringLike": { "route53:VPCs": [ "VPCId=<vpc-id>,VPCRegion=<region>" ] } } }, { "Sid": "Statement2", "Effect": "Allow", "Action": "ec2:DescribeVpcs", "Resource": "*" } ] }