Gerenciar tags de projeto

Neste documento, explicamos como gerenciar os pares de chave-valor de tag atuais que organizam seus projetos no Google Distributed Cloud (GDC) com isolamento físico. As tags podem ser visualizadas por administradores com o uso de permissões do Identity and Access Management (IAM). É possível definir permissões para seus pares de chave-valor de tag para aplicar quem pode visualizá-los quando eles estão vinculados a um projeto. Você também pode conferir os atributos de tag atuais para acompanhar como as tags são aplicadas na sua organização, como:

Para mais informações sobre tags, consulte Visão geral de tags.

Este documento é destinado a administradores de TI do grupo de administradores de plataforma, responsáveis por organizar e gerenciar projetos em um universo do GDC. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

  • Para receber as permissões necessárias para conceder a outros usuários permissões de tag ou inspecionar namespaces de par de chave-valor de tag, peça ao administrador do IAM da organização para conceder a você o papel de administrador de tags (tag-admin).

  • Para receber as permissões necessárias para listar um projeto com uma tag, peça ao administrador do IAM da organização para conceder a você a função de leitor de projetos (project-viewer).

Aplicar permissões ao par de chave-valor da tag

Cada chave e valor de tag exige vinculações de papéis específicas para que os usuários possam acessar e gerenciar.

Defina as funções adequadas para suas chaves e valores de tag e aplique permissões.

  1. Identifique o nome da função pretendida e os namespaces necessários para aplicar essa função. Para mais informações, consulte Uso de tags.

  2. Conceda as permissões de função para uma tag aplicando o recurso RoleBinding para cada namespace definido:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: BINDING_NAME
      namespace: NAMESPACE
    subjects:
    - kind: GROUP_SUBJECT
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: TAG_ROLE_NAME
      apiGroup: rbac.authorization.k8s.io
    EOF
    

    Substitua:

    • BINDING_NAME: o nome personalizado da vinculação de papel.

    • NAMESPACE: o namespace a que a vinculação de função será aplicada, como platform, o namespace de gerenciamento da chave de tag ou o namespace de política do valor da tag.

    • GROUP_SUBJECT: o tipo de assunto a que as permissões de papel serão aplicadas. Esse valor pode ser User, Group ou ServiceAccount. Para mais informações, consulte Referência a assuntos na documentação do Kubernetes.

    • GROUP_NAME: o nome do grupo personalizado.

    • TAG_ROLE_NAME: o nome da função da tag a ser aplicada, como tag-admin ou tag-KEY_NAME-admin.

    Por exemplo, para conceder a permissão de papel tag-admin a um usuário para um par de chave-valor de tag, implante os seguintes recursos personalizados RoleBinding no namespace platform, a chave de tag managementNamespace e o valor de tag policyNamespace:

    kubectl apply -f - <<EOF
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-binding
      namespace: platform
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-mgmt-binding
      namespace: g-t-tag-key-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: tag-admin-policy-binding
      namespace: g-t-tag-value-1
    subjects:
    - kind: User
      name: user-1
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: tag-admin
      apiGroup: rbac.authorization.k8s.io
    EOF
    

Encontrar o namespace de gerenciamento

Um namespace de gerenciamento é o namespace gerado pelo sistema criado para uma chave de tag.

  • Encontre o namespace de gerenciamento da chave de tag específica:

    kubectl get tagkey TAG_KEY_NAME --namespace platform \
        -o jsonpath='{.status.managementNamespace}'
    

    Substitua TAG_KEY_NAME pelo nome da chave de tag.

Encontrar o namespace da política

Um namespace de política é o namespace gerado pelo sistema criado para um valor de tag.

  • Encontre o namespace da política do valor de tag específico:

    kubectl get tagvalue TAG_VALUE_NAME --namespace MANAGEMENT_NAMESPACE \
        -o jsonpath='{.status.policyNamespace}'
    

    Substitua:

    • TAG_VALUE_NAME: o nome do valor da tag.
    • MANAGEMENT_NAMESPACE: o nome do namespace de gerenciamento da chave de tag correspondente ao valor da tag. Para mais informações, consulte Encontrar o namespace de gerenciamento.

Listar projetos com uma tag

Para listar todos os projetos vinculados a um par de chave-valor específico, faça o seguinte:

  • Liste todos os projetos que correspondem ao seu par de chave-valor de tag:

    kubectl get project --namespace platform --label tag.resourcemanager.gdc.goog/TAG_KEY_NAME=TAG_VALUE_NAME
    

    Substitua:

    • TAG_KEY_NAME: o nome da chave de tag.
    • TAG_VALUE_NAME: o nome do valor da tag.

    O resultado será o seguinte:

    NAME            AGE
    project-1       17d
    project-2       10d
    project-3       4d
    

A seguir