Usar políticas baseadas em identidade (políticas do IAM) para o Amazon Route 53
Este tópico fornece exemplos de políticas baseadas em identidade que demonstram como um administrador de conta pode anexar políticas de permissões a identidades do IAM e, dessa forma, conceder permissões para executar operações em recursos do Amazon Route 53.
Importante
Recomendamos que você analise primeiramente os tópicos introdutórios que explicam os conceitos básicos e as opções disponíveis para gerenciar o acesso aos recursos do Route 53. Para ter mais informações, consulte Visão geral do gerenciamento de permissões de acesso aos recursos do Amazon Route 53.
nota
Ao conceder acesso, a zona hospedada e a Amazon VPC devem pertencer à mesma partição. Uma partição é um grupo de Regiões da AWS. O escopo de cada Conta da AWS é uma partição.
Estas são as partições compatíveis:
-
aws
- Regiões da AWS -
aws-cn
: regiões da China -
aws-us-gov
- AWS GovCloud (US) Region
Para obter mais informações, consulte Gerenciamento de acesso e Cotas e endpoints do Amazon Route 53 na Referência geral da AWS.
Tópicos
A seguir, um exemplo de uma política de permissões. O Sid
, ou o ID de instrução, é opcional:
{ "Version": "2012-10-17", "Statement": [ { "Sid" : "AllowPublicHostedZonePermissions", "Effect": "Allow", "Action": [ "route53:CreateHostedZone", "route53:UpdateHostedZoneComment", "route53:GetHostedZone", "route53:ListHostedZones", "route53:DeleteHostedZone", "route53:ChangeResourceRecordSets", "route53:ListResourceRecordSets", "route53:GetHostedZoneCount", "route53:ListHostedZonesByName" ], "Resource": "*" }, { "Sid" : "AllowHealthCheckPermissions", "Effect": "Allow", "Action": [ "route53:CreateHealthCheck", "route53:UpdateHealthCheck", "route53:GetHealthCheck", "route53:ListHealthChecks", "route53:DeleteHealthCheck", "route53:GetCheckerIpRanges", "route53:GetHealthCheckCount", "route53:GetHealthCheckStatus", "route53:GetHealthCheckLastFailureReason" ], "Resource": "*" } ] }
A política inclui duas instruções:
-
A primeira instrução concede permissões para as ações necessárias para criar e gerenciar zonas hospedadas públicas e seus registros. O caractere curinga (*) no nome de recurso da Amazon Resource Name (ARN) concede acesso a todas as zonas hospedadas de propriedade da conta da AWS atual.
-
A segunda instrução concede permissões para todas as ações necessárias para criar e gerenciar verificações de integridade.
Para visualizar uma lista de ações e ARNs que podem ser especificadas para conceder ou negar permissão para usar cada ação, consulte Permissões da API do Amazon Route 53: referência de ações, recursos e condições.
Permissões necessárias para usar o console do Amazon Route 53
Para conceder acesso total ao console do Amazon Route 53, conceda as permissões na seguinte política de permissões:
{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53:*", "route53domains:*", "tag:*", "ssm:GetParametersByPath", "cloudfront:ListDistributions", "elasticloadbalancing:DescribeLoadBalancers", "elasticbeanstalk:DescribeEnvironments", "s3:ListAllamzn-s3-demo-bucket", "s3:GetBucketLocation", "s3:GetBucketWebsite", "ec2:DescribeRegions", "ec2:DescribeVpcs", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:ModifyNetworkInterfaceAttribute", "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:CreateTopic", "kms:ListAliases", "kms:DescribeKey", "kms:CreateKey", "kms:CreateAlias", "kms:Sign", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:GetMetricStatistics" ], "Resource":"*" }, { "Effect": "Allow", "Action": "apigateway:GET", "Resource": "arn:aws:apigateway:*::/domainnames" } ] }
Veja por que as permissões são necessárias:
route53:*
-
Permite que você execute todas as ações do Route 53, com exceção das seguintes:
-
Criar e atualizar registros com alias para os quais o valor de Alias Target (Destino do alias) é uma distribuição do CloudFront, um balanceador de carga do Elastic Load Balancing, um ambiente do Elastic Beanstalk ou um bucket do Amazon S3. (Com essas permissões, você pode criar registros de alias para os quais o valor de Alvo do alias é outro registro na mesma zona hospedada.)
-
Como trabalhar com zonas hospedadas privadas.
-
Trabalhando com domínios.
-
Criar, excluir e visualizar alarmes do CloudWatch.
-
Renderize métricas do CloudWatch no console do Route 53.
-
route53domains:*
-
Permite que você trabalhe com domínios.
Importante
Se você relacionar as ações
route53
individualmente, deverá incluirroute53:CreateHostedZone
para trabalhar com domínios. Quando você registra um domínio, uma zona hospedada é criada ao mesmo tempo. Portanto, uma política que inclui permissões para registrar domínios também requer permissão para criar zonas hospedadas.Para o registro de domínio, o Route 53 não oferece suporte à concessão ou negação de permissões para recursos individuais.
route53resolver:*
-
Permite que você trabalhe com o Route 53 Resolver.
ssm:GetParametersByPath
-
Permite que você busque regiões disponíveis publicamente ao criar novos registros de alias, zonas hospedadas privadas e verificações de integridade.
cloudfront:ListDistributions
-
Permite que você crie e atualize registros com alias para os quais o valor de Alias Target (Destino do alias) é uma distribuição do CloudFront.
Essas permissões não são necessárias se você não estiver usando o console do Route 53. O Route 53 utiliza-o apenas para obter uma lista de distribuições para exibir no console.
elasticloadbalancing:DescribeLoadBalancers
-
Permite que você crie e atualize registros de alias para os quais o valor de Alvo do alias é um load balancer do ELB.
Essas permissões não são necessárias se você não estiver usando o console do Route 53. O Route 53 usa-o apenas para obter uma lista de balanceadores de carga para exibir no console.
elasticbeanstalk:DescribeEnvironments
-
Permite que você crie e atualize registros com alias para os quais o valor de Alias Target (Destino do alias) é um ambiente do Elastic Beanstalk.
Essas permissões não são necessárias se você não estiver usando o console do Route 53. O Route 53 usa-o apenas para obter uma lista de ambientes para exibir no console.
s3:ListAllamzn-s3-demo-bucket
,s3:GetBucketLocation
, es3:GetBucketWebsite
-
Permite que você crie e atualize registros com alias para os quais o valor de Alias Target (Destino do alias) é um bucket do Amazon S3. (Você só poderá criar um alias para um bucket do Amazon S3 se o bucket estiver configurado como um endpoint do site.
s3:GetBucketWebsite
obtém as informações de configuração necessárias.)Essas permissões não são necessárias se você não estiver usando o console do Route 53. O Route 53 utiliza-o apenas para obter uma lista de buckets para exibir no console.
ec2:DescribeVpcs
eec2:DescribeRegions
-
Permite que você trabalhe com zonas hospedadas privadas.
- Todas as permissões
ec2
listadas -
Permite que você trabalhe com o Route 53 Resolver.
sns:ListTopics
,sns:ListSubscriptionsByTopic
,sns:CreateTopic
,cloudwatch:DescribeAlarms
,cloudwatch:PutMetricAlarm
,cloudwatch:DeleteAlarms
-
Permite que você crie, exclua e visualize alarmes do CloudWatch.
cloudwatch:GetMetricStatistics
-
Permite que você crie as verificações de integridade da métrica do CloudWatch.
Essas permissões não são necessárias se você não estiver usando o console do Route 53. O Route 53 usa-o apenas para obter as estatísticas a serem exibidas no console.
apigateway:GET
-
Permite que você crie e atualize registros de alias para os quais o valor de Alias Target (Destino do alias) é uma API do Amazon API Gateway.
Essa permissão não é necessária se você não estiver usando o console do Route 53. O Route 53 usa-o apenas para obter uma lista de APIs para exibir no console.
kms:*
-
Permite que você trabalhe com o AWS KMS para habilitar a assinatura DNSSEC.
Permissões de exemplo para um proprietário de registro de domínio
Com as permissões do conjunto de registros de recursos, você pode definir permissões granulares que limitam o que o usuário AWS pode atualizar ou modificar. Para ter mais informações, consulte Uso de condições de política do IAM para controle de acesso refinado.
Em alguns cenários, um proprietário de zona hospedada pode ser responsável pelo gerenciamento geral da zona hospedada, enquanto outra pessoa na organização é responsável por um subconjunto dessas tarefas. Um proprietário de zona hospedada que habilitou a assinatura DNSSEC, por exemplo, pode querer criar uma política do IAM que inclua a permissão para outra pessoa adicionar e excluir registros de conjunto de recursos (RRs) na zona hospedada, entre outras tarefas. As permissões específicas que um proprietário de zona hospedada escolhe habilitar para um proprietário de registro ou outras pessoas dependerão da política de sua organização.
Veja a seguir um exemplo de política do IAM que permite que um proprietário de registro faça modificações em RRs, políticas de tráfego e verificações de integridade. Um proprietário de registro com essa política não tem permissão para realizar operações em nível de região, como criar ou excluir uma zona, habilitar ou desabilitar o log de consultas, criar ou excluir um conjunto de delegações reutilizáveis ou alterar configurações de DNSSEC.
{ "Sid": "Do not allow zone-level modification ", "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets", "route53:CreateTrafficPolicy", "route53:DeleteTrafficPolicy", "route53:CreateTrafficPolicyInstance", "route53:CreateTrafficPolicyVersion", "route53:UpdateTrafficPolicyInstance", "route53:UpdateTrafficPolicyComment", "route53:DeleteTrafficPolicyInstance", "route53:CreateHealthCheck", "route53:UpdateHealthCheck", "route53:DeleteHealthCheck", "route53:List*", "route53:Get*" ], "Resource": [ "*" ] }
Permissões de chave gerenciada pelo cliente do Route 53 necessárias para assinatura DNSSEC
Quando você habilita a assinatura de DNSSEC para o Route 53, o Route 53 cria uma chave de assinatura de chave (KSK) com base em uma chave gerenciada pelo cliente no AWS Key Management Service (AWS KMS). Você pode usar uma chave gerenciada pelo cliente existente que suporte a assinatura de DNSSEC ou criar uma nova. O Route 53 deve ter permissão para acessar sua chave gerenciada pelo cliente para que ele possa criar o KSK para você.
Para habilitar o Route 53 para acessar sua chave gerenciada pelo cliente, verifique se a diretiva de chave gerenciada pelo cliente contém as seguintes instruções:
{ "Sid": "Allow Route 53 DNSSEC Service", "Effect": "Allow", "Principal": { "Service": "dnssec-route53.amazonaws.com" }, "Action": ["kms:DescribeKey", "kms:GetPublicKey", "kms:Sign"], "Resource": "*" }, { "Sid": "Allow Route 53 DNSSEC to CreateGrant", "Effect": "Allow", "Principal": { "Service": "dnssec-route53.amazonaws.com" }, "Action": ["kms:CreateGrant"], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }
O problema de representante confuso é um problema de segurança em que uma entidade que não tem permissão para executar uma ação pode coagir uma entidade mais privilegiada a executá-la. Para proteger o AWS KMS desse problema, você tem a opção de limitar as permissões que um serviço tem para um recurso em uma política baseada em recursos, fornecendo uma combinação de condições aws:SourceAccount
e aws:SourceArn
(ambas ou uma). aws:SourceAccount
é um ID de conta da AWS de um proprietário de uma zona hospedada. aws:SourceArn
é um ARN de uma zona hospedada.
Veja a seguir dois exemplos de permissões que podem ser adicionadas:
{ "Sid": "Allow Route 53 DNSSEC Service", … "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:route53:::hostedzone/HOSTED_ZONE_ID" } } },
- Ou -
{ "Sid": "Allow Route 53 DNSSEC Service", … "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["1111-2222-3333","4444-5555-6666"] }, "ArnLike": { "aws:SourceArn": "arn:aws:route53:::hostedzone/*" } } },
Para obter mais informações, consulte O problema confused deputy no Guia do usuário IAM.
Exemplos de política gerenciada pelo cliente
Você pode criar suas próprias políticas personalizadas do IAM para conceder permissões para ações do Route 53. Você pode anexar essas políticas personalizadas a grupos do IAM que exijam as permissões especificadas. Essas políticas funcionam quando você está usando a API do Route 53, os SDKs da AWS ou a CLI da AWS. Os exemplos a seguir mostram permissões para vários casos de uso comuns. Para a política que concede acesso total de um usuário ao Route 53, consulte Permissões necessárias para usar o console do Amazon Route 53.
Exemplos
Exemplo 1: permitir acesso de leitura a todas as zonas hospedadas
A política de permissões a seguir concede as permissões de usuário para listar todas as zonas hospedadas e visualizar todos os registros em uma zona hospedada.
{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53:GetHostedZone", "route53:ListResourceRecordSets" ], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:ListHostedZones"], "Resource":"*" } ] }
Exemplo 2: permitir criação e exclusão de zonas hospedadas
A política de permissões a seguir permite que os usuários criem e excluam zonas hospedadas assim como acompanhem o andamento da alteração.
{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":["route53:CreateHostedZone"], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:DeleteHostedZone"], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:GetChange"], "Resource":"*" } ] }
Exemplo 3: permitir acesso total a todos os domínios (somente zonas hospedadas públicas)
A política de permissões a seguir permite que os usuários executem todas as ações em registros de domínio, incluindo permissões para registrar domínios e criar zonas hospedadas.
{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53domains:*", "route53:CreateHostedZone" ], "Resource":"*" } ] }
Quando você registra um domínio, uma zona hospedada é criada ao mesmo tempo. Assim, uma política que inclui permissões para registrar domínios também requer permissões para criar zonas hospedadas. (Para o registro de domínio, o Route 53 não oferece suporte à concessão de permissões para recursos individuais.)
Para obter informações sobre permissões necessárias para trabalhar com zonas hospedadas privadas, consulte Permissões necessárias para usar o console do Amazon Route 53.
Exemplo 4: permitir a criação de endpoints de entrada e saída do Route 53 Resolver
A política de permissões a seguir permite que os usuários usem o console do Route 53 para criar endpoints de entrada e saída do Resolver.
Algumas dessas permissões são necessárias apenas para criar endpoints no console. Você pode omitir essas permissões se desejar conceder permissões somente para criar endpoints de entrada e saída de forma programática:
-
route53resolver:ListResolverEndpoints
permite que os usuários vejam a lista de endpoints de entrada ou saída para que possam verificar se um endpoint foi criado. -
DescribeAvailabilityZones
é necessário para exibir uma lista de zonas de disponibilidade. -
DescribeVpcs
é necessário para exibir uma lista de VPCs.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "route53resolver:CreateResolverEndpoint", "route53resolver:ListResolverEndpoints", "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": "*" } ] }