Esta página descreve como usar etiquetas com a gestão de identidade e de acesso (IAM) para ajudar a controlar o acesso aos seus Trusted Cloud by S3NS recursos.
Para saber mais sobre as etiquetas, consulte o artigo Vista geral das etiquetas.
Vista geral das etiquetas
Uma etiqueta é um par de chave-valor anexado a um Trusted Cloud recurso. Pode conceder funções de IAM condicionalmente ou recusar autorizações de IAM condicionalmente com base no facto de um recurso ter ou não uma etiqueta específica.
Os recursos herdam os valores das etiquetas da respetiva organização principal, pastas e projeto. Como resultado, pode usar etiquetas para gerir o acesso a qualquer Trusted Cloud recurso.
Seguem-se alguns exemplos de utilização comuns para gerir o acesso com etiquetas:
- Ambientes de desenvolvimento, teste e produção. Por exemplo, pode adicionar as etiquetas
environment: dev
ao seu ambiente de programação eenvironment: prod
ao seu ambiente de produção. - Tipos de componentes. Por exemplo, pode adicionar as etiquetas
component: frontend
aos recursos de front-end ecomponent: batch
aos recursos para processamento em lote. - Nomes dos projetos. Por exemplo, se a sua equipa estiver a trabalhar num projeto com o nome de código Atlas, pode adicionar a etiqueta
project: atlas
aos recursos de desenvolvimento da equipa.
Definições e identificadores de etiquetas
Antes de anexar etiquetas a recursos, tem de definir a chave da etiqueta, bem como os valores que a etiqueta permite. Pode criar estas definições ao nível da organização ou do projeto. Usa o Resource Manager para gerir definições de etiquetas. Para saber mais, consulte o artigo Criar e definir uma nova etiqueta.
Cada chave e valor de etiqueta tem alguns identificadores diferentes:
-
Um ID permanente, que é globalmente exclusivo e nunca pode ser reutilizado. Por exemplo, uma chave de etiqueta pode ter o ID permanente
tagKeys/123456789012
e um valor de etiqueta pode ter o ID permanentetagValues/567890123456
. -
Um diminutivo. O nome abreviado de cada chave tem de ser exclusivo no projeto ou na organização em que a chave está definida, e o nome abreviado de cada valor tem de ser exclusivo para a respetiva chave associada. Por exemplo, uma chave de etiqueta pode ter o diminutivo
env
e um valor de etiqueta pode ter o diminutivoprod
. -
Um nome com espaço de nomes, que adiciona o ID numérico da sua organização ou o ID do projeto ao nome curto de uma chave de etiqueta. Por exemplo, uma chave de etiqueta criada para uma organização pode ter o nome com espaço de nomes
123456789012/env
. Para saber como obter o ID da organização, consulte o artigo Obter o ID do recurso da organização. Uma chave de etiqueta criada para um projeto pode ter o nome com espaço de nomesmyproject/env
. Para saber como obter o ID do projeto, consulte o artigo Identificar projetos.
Conforme explicado nesta página, depois de anexar etiquetas a um recurso, pode escrever condições para conceder acesso com base nas etiquetas. Para escrever uma condição, tem de escolher que tipo de identificador usar na condição. Siga estas diretrizes para escolher entre elas:
- Para experimentar com etiquetas, considere usar o nome com espaço de nomes (para chaves) e o nome abreviado (para valores). Estes identificadores são mais fáceis de compreender e memorizar, especialmente quando está a começar.
Se gerir a sua configuração de forma declarativa,através de uma ferramenta como o Terraform, considere usar o nome com espaço de nomes (para chaves) e o nome abreviado (para valores). Pode reutilizar estes identificadores ao longo do tempo, o que significa que uma ferramenta declarativa pode eliminá-los e recriá-los, e as suas condições continuam a funcionar.
Esta abordagem tem uma desvantagem: suponhamos que elimina uma chave ou um valor de etiqueta e, em seguida, cria uma nova chave ou um novo valor com o mesmo nome, mas um significado diferente. Se a sua condição se referir ao nome com espaço de nomes ou ao nome abreviado, a condição continua a aplicar-se à nova chave ou valor.
Em alguns casos, este comportamento pode fazer com que os responsáveis tenham acesso que não pretendia que tivessem.
Para ajudar a minimizar o risco, considere usar IDs permanentes, que nunca podem ser reutilizados.
Veja por que motivo os IDs permanentes ajudam a minimizar o risco: suponhamos que elimina uma chave ou um valor de etiqueta e, em seguida, cria uma nova chave ou um novo valor com o mesmo nome, mas um significado diferente. Se a sua condição se referir ao ID permanente, a condição não se aplica à nova chave nem ao novo valor. Como resultado, é menos provável que os principais obtenham acesso que não pretendia que tivessem.
Uma desvantagem é que, se eliminar e recriar chaves e valores, e quiser preservar o acesso dos principais, também tem de atualizar as políticas de autorização para fazer referência aos novos IDs permanentes.
Acesso a recursos etiquetados
Pode usar etiquetas com condições do IAM para conceder uma função condicionalmente, consoante as etiquetas anexadas ou herdadas por um recurso. Se uma condição for avaliada como true
, o acesso é concedido; caso contrário, o acesso não é concedido. Para saber mais, consulte a
vista geral das condições da IAM.
Determinadas áreas da consola não reconhecem associações de funções da política de autorização com condições baseadas em etiquetas. Trusted Cloud Como resultado, se tiver uma função com uma condição baseada em etiquetas, a consola Trusted Cloud pode impedir incorretamente que realize determinadas ações. Se encontrar este problema, use um método alternativo, como a CLI gcloud, para realizar a ação.
As secções seguintes mostram exemplos de expressões de condição que verificam as etiquetas num recurso. A condição chama funções diferentes consoante verifique o ID permanente ou o nome abreviado. Para saber mais sobre estas funções, consulte o artigo Etiquetas de recursos.
Condições que usam IDs permanentes
Esta condição concede uma função em recursos com a etiqueta
tagKeys/123456789012: tagValues/567890123456
:
resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')
Esta condição concede uma função em recursos que tenham qualquer etiqueta com a chave
tagKeys/123456789012
, independentemente do respetivo valor:
resource.hasTagKeyId('tagKeys/123456789012')
Esta condição concede uma função em recursos que têm a etiqueta tagKeys/123456789012: tagValues/567890123456
e qualquer etiqueta que use a chave tagKeys/987654321098
:
resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456') &&
resource.hasTagKeyId('tagKeys/987654321098')
Condições que usam nomes com espaço de nomes e diminutivos
Esta condição concede uma função em recursos com a etiqueta env: prod
, o que indica que o recurso está num ambiente de produção:
resource.matchTag('123456789012/env', 'prod')
Esta condição concede uma função em recursos que tenham qualquer etiqueta com a chave env
,
independentemente do respetivo valor:
resource.hasTagKey('123456789012/env')
Esta condição concede uma função em recursos que têm a etiqueta env: prod
e
qualquer etiqueta que use a chave project
:
resource.matchTag('123456789012/env', 'prod') &&
resource.hasTagKey('123456789012/project')
O que se segue?
- Saiba como gerir etiquetas e anexar etiquetas a recursos.
- Obtenha detalhes sobre a verificação de etiquetas numa condição.