O Auto Scaling permite categorizar e controlar o acesso a grupos de dimensionamento por meio de tags. É possível conceder permissões refinadas para grupos individuais ou para vários grupos que compartilham uma tag específica. Este tópico explica como usar a autenticação baseada em tags para gerenciar permissões de usuários RAM, aumentando a eficiência da gestão e reduzindo o risco de vazamento de dados.
Contexto
Uma tag é um identificador de recurso de nuvem. Tags permitem categorizar, pesquisar e agregar recursos de nuvem com as mesmas características sob diferentes dimensões. Para mais informações, consulte Tags.
O Resource Access Management (RAM) possibilita gerenciar identidades de usuários e controlar o acesso e as operações nos seus recursos de nuvem com base em políticas. Para mais informações, consulte O que é o RAM?.
Ao utilizar tags como condições em uma política do Resource Access Management (RAM), você implementa controle refinado sobre o Auto Scaling.
A figura a seguir ilustra como usar tags para gerenciar permissões de acesso e operação de recursos para usuários RAM, processo conhecido como autenticação baseada em tags.
APIs sem suporte à autenticação por tag
Após anexar uma política de autenticação baseada em tags a um usuário RAM, essa autenticação não terá suporte quando o usuário chamar as seguintes operações de API para gerenciar o Auto Scaling.
|
API |
Suporte à autenticação por tag |
|
DescribeRegions |
Não |
|
Para tarefas agendadas não associadas a um grupo de dimensionamento:
|
Não |
|
Para tarefas acionadas por eventos não associadas a um grupo de dimensionamento:
|
Não |
Cenário de exemplo
Este tópico utiliza o cenário a seguir para demonstrar como implementar a autenticação baseada em tags.
Suponha que você tenha criado dois grupos de dimensionamento para desenvolvimento de jogos. Cada grupo possui tags de ambiente e equipe. Você precisa conceder a um usuário RAM permissões específicas sobre os seguintes grupos de dimensionamento:
|
Grupo de dimensionamento |
Nome |
Tag |
|
Grupo de dimensionamento 1 |
asg-001 |
|
|
Grupo de dimensionamento 2 |
asg-002 |
|
Os requisitos específicos de controle de acesso são:
Cenário 1: Não é permitido crie grupos de dimensionamento sem tags. O Grupo de dimensionamento 1 só será criado com sucesso se você adicionar as tags
environment:testeteam:game1durante a criação.Cenário 2: Ao consultar grupos de dimensionamento, apenas os recursos do Grupo de dimensionamento 1 estarão visíveis, pois ele está vinculado às tags
environment:testeteam:game1.Cenário 3: A gestão é permitida apenas para recursos no Grupo de dimensionamento 1 (com as tags
environment:testeteam:game1), mas não para recursos no Grupo de dimensionamento 2 (com as tagsenvironment:deveteam:game2).
Procedimento
Antes de começar, certifique-se de ter criado um usuário RAM. Para mais informações, consulte Criar um usuário RAM.
-
Crie dois grupos de dimensionamento.
Para mais informações, consulte Configurar grupos de dimensionamento. Consulte Cenário de exemplo para obter detalhes sobre os grupos de dimensionamento.
Faça login no RAM console.
-
Crie uma política personalizada.
Para mais informações, consulte Criar uma política personalizada.
É possível defina múltiplas condições de tag para recursos de nuvem no bloco
Conditionde uma política, restringindo assim as permissões para executar operações em recursos do Auto Scaling. Condições com suporte para autenticação baseada em tags:Condição baseada em tag
Descrição
acs:RequestTagVerifica se a solicitação inclui uma tag específica.
Se uma solicitação de API não incluir parâmetros de tag, o uso de
acs:RequestTagcausará falha na autenticação.acs:ResourceTagVerifica se o recurso especifique na solicitação contém uma tag específica.
Caso utilize
acs:ResourceTagem uma solicitação de API que não contenha um parâmetro de ID de recurso, a autenticação falhará.-
Cenário 1: Impor tags específicas durante a criação do grupo de dimensionamento
Neste caso, o Grupo de dimensionamento 1 só será criado com sucesso se as tags
environment:testeteam:game1estiverem vinculadas a ele durante a criação.A política abaixo corresponde a este cenário:
{ "Effect": "Allow", "Action": "ess:Create*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/environment": "test", "acs:RequestTag/team": "game1" } } } -
Cenário 2: Permitir que usuários visualize apenas o Grupo de dimensionamento 1
Isso significa que, ao vincular as tags
environment:testeteam:game1ao Grupo de dimensionamento 1, apenas os recursos desse grupo serão retornados nas consultas.A política abaixo corresponde a este cenário:
{ "Effect": "Allow", "Action": "ess:Describe*", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/environment": "test", "acs:RequestTag/team": "game1" } } } -
Cenário 3: Permitir que usuários gerencie apenas o Grupo de dimensionamento 1 e negar acesso ao Grupo de dimensionamento 2
Por exemplo, o Grupo de dimensionamento 1 está vinculado às tags
environment:testeteam:game1, enquanto o Grupo de dimensionamento 2 está vinculado às tagsenvironment:deveteam:game2.A política abaixo corresponde a este cenário:
{ "Version": "1", "Statement": [ { "Action": "ess:*", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/environment": "test", "acs:ResourceTag/team": "game1" } } }, { "Action": "ess:*", "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/environment": "dev", "acs:ResourceTag/team": "game2" } } }, { "Effect": "Allow", "Action": [ "ess:DescribeRegions", "ess:CreateScheduledTask", "ess:ModifyScheduledTask", "ess:DescribeScheduledTasks", "ess:DeleteScheduledTask", "ess:CreateAlarm", "ess:DescribeAlarms", "ess:ModifyAlarm", "ess:EnableAlarm", "ess:DeleteAlarm" ], "Resource": "*" } ] }
-
-
Anexe a política personalizada ao usuário RAM.
Para mais informações, consulte Conceder permissões a um usuário RAM.
-
Verifique se a política entrou em vigor.
-
Valide o Cenário 1 criando o Grupo de dimensionamento 1
Como o Grupo de dimensionamento 1 possui as tags
environment:testeteam:game1, ele pode ser criado com sucesso.Se você tentar crie o grupo sem as tags especifique, a criação será negada devido a permissões insuficientes. Um erro diferente ocorre caso o Auto Scaling não tenha as permissões necessárias da OpenAPI: o erro
Forbidden.Unauthorizedé retornado com a mensagem: The user has not fully authorized the OpenAPI interface for ESS. Please authorize and try again. Nessa situação, conceda as permissões necessárias e tente novamente.
-
Valide o Cenário 2 consultando grupos de dimensionamento
Para um grupo de dimensionamento que tenha as tags
environment:testeteam:game1, ainda é possível recuperar suas informações realizando uma consulta sem filtrar por tags.Caso consulte um grupo diferente do Grupo de dimensionamento 1 que não esteja marcado com
environment:testeteam:game1, a consulta não retornará resultados.Se você não especifique um grupo de dimensionamento e pesquisar apenas pelas tags
environment:testeteam:game1, a consulta retornará todos os grupos de dimensionamento que possuem essas tags.
-
Valide o Cenário 3 excluindo grupos de dimensionamento
Se o Grupo de dimensionamento 1 tiver as tags
environment:testeteam:game1, você poderá exclua o grupo.Quando um grupo de dimensionamento não estiver associado às tags
environment:testeteam:game1, ou possuir outras tags, uma mensagem indicará que você não tem permissão para excluí-lo.
-
Documentos relacionados
Para crie, visualize ou exclua um grupo de dimensionamento chamando uma operação de API, consulte CreateScalingGroup, DescribeScalingGroups ou DeleteScalingGroup.
Para crie uma política personalizada chamando uma operação de API, consulte CreatePolicy.
Para conceder permissões a um usuário RAM chamando uma operação de API, consulte AttachPolicyToUser.
Caso tenha vários grupos de dimensionamento, utilize um grupo de recursos para gerenciá-los. Para mais informações, consulte Usar grupos de recursos para gerenciar grupos de dimensionamento.
Se desejar usar autenticação no nível de recurso para administração delegada do Auto Scaling, consulte Gerenciar o Auto Scaling usando autenticação no nível de recurso.