Autenticação de cluster do Workload Identity

Este documento descreve como configurar e usar a autenticação de cluster de identidade de carga de trabalho para o Google Distributed Cloud (apenas software) em hardware não processado. Em vez das chaves de contas de serviço, a autenticação de clusters de identidade de carga de trabalho usa tokens de curta duração e a federação de identidade de carga de trabalho para criar e proteger os seus clusters. As credenciais de curta duração para a conta de serviço estão no formato de chaves de acesso do OAuth 2.0. Os tokens de acesso expiram após 1 hora por predefinição, exceto os tokens de obtenção de imagens, que expiram após 12 horas.

A autenticação de cluster de identidade de carga de trabalho só está disponível quando cria novos clusters com a versão 1.30 e posteriores. Não pode configurar um cluster existente para usar a autenticação de cluster de identidade de carga de trabalho durante uma atualização.

Por outro lado, o modo com chave, o método padrão para criar e proteger clusters, usa chaves de contas de serviço transferidas. Quando cria um cluster autogerido (administrador, híbrido ou autónomo), especifica o caminho para as chaves transferidas. As chaves são, em seguida, armazenadas como segredos no cluster e em quaisquer clusters de utilizadores geridos. Por predefinição, as chaves de contas de serviço não expiram e representam um risco de segurança se não forem geridas corretamente.

A autenticação de cluster do Workload Identity oferece duas vantagens principais em relação à utilização de chaves de contas de serviço:

  • Segurança melhorada: as chaves de contas de serviço representam um risco de segurança se não forem geridas corretamente. Os tokens OAuth 2.0 e a federação de identidades da carga de trabalho são considerados alternativas de práticas recomendadas às chaves de contas de serviço. Para mais informações sobre tokens de contas de serviço, consulte o artigo Credenciais de contas de serviço de curta duração. Para mais informações sobre a federação de identidades da carga de trabalho, consulte o artigo Federação de identidades da carga de trabalho.

  • Manutenção reduzida: as chaves de contas de serviço requerem mais manutenção. Alternar e proteger regularmente estas chaves pode ser um encargo administrativo significativo.

Enquanto esta funcionalidade estiver em pré-visualização, existem algumas limitações conhecidas.

Antes de começar

Nas secções seguintes, cria contas de serviço e concede as funções necessárias para a autenticação de clusters de identidade da carga de trabalho. As instruções de configuração neste documento não substituem as instruções nos recursos de configuração Google Cloud . São necessárias além dos pré-requisitos de instalação apenas de software padrão do Google Distributed Cloud. As contas de serviço necessárias para a autenticação do cluster de identidade da carga de trabalho são semelhantes às contas de serviço descritas em Configurar Google Cloud recursos, mas têm nomes únicos, pelo que não interferem com os clusters que usam as chaves da conta de serviço predefinidas.

Esta página destina-se a administradores, arquitetos e operadores que configuram, monitorizam e gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e as tarefas de exemplo que referimos no Google Cloud conteúdo, consulte o artigo Funções de utilizador e tarefas comuns do GKE.

A tabela seguinte descreve as contas de serviço necessárias para a autenticação de clusters de identidade da carga de trabalho:

Conta de serviço Finalidade Funções
ADMIN_SA Use esta conta de serviço para gerar tokens. Cada token tem os privilégios associados às funções da conta de serviço. roles/gkehub.admin
roles/logging.admin
roles/monitoring.admin
roles/monitoring.dashboardEditor
roles/iam.serviceAccountAdmin
roles/iam.serviceAccountTokenCreator
baremetal-controller Connect Agent usa esta conta de serviço para manter uma ligação entre o seu cluster e Google Cloud e para registar os seus clusters com uma frota. Esta conta de serviço também atualiza os tokens da conta de serviço baremetal-gcr. roles/gkehub.admin
roles/monitoring.dashboardEditor
roles/serviceusage.serviceUsageViewer
baremetal-cloud-ops O agente do Stackdriver usa esta conta de serviço para exportar registos e métricas de clusters para o Cloud Logging e o Cloud Monitoring. roles/logging.logWriter
roles/monitoring.metricWriter
roles/stackdriver.resourceMetadata.writer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/monitoring.dashboardEditor
roles/monitoring.viewer
roles/serviceusage.serviceUsageViewer
roles/kubernetesmetadata.publisher
baremetal-gcr O Google Distributed Cloud usa esta conta de serviço para transferir imagens de contentores do Artifact Registry. Nenhum

Crie e configure contas de serviço para a autenticação de clusters de identidade da carga de trabalho

As secções seguintes contêm instruções para criar as contas de serviço necessárias e conceder-lhes as funções necessárias para a autenticação de clusters de identidade de carga de trabalho. Para ver uma lista das contas de serviço e das respetivas funções necessárias, consulte a tabela na secção anterior.

Crie contas de serviço

Para criar as contas de serviço para a autenticação de cluster de identidade da carga de trabalho, siga estes passos:

  1. Na estação de trabalho de administração, inicie sessão na CLI Google Cloud:

    gcloud auth login
    
  2. Opcionalmente, crie a conta de serviço administrativa:

    O nome da conta de serviço ADMIN_SA é arbitrário. Pode até usar uma conta de serviço existente, se tiver as funções identificadas na tabela na secção anterior, mas isso não é recomendado porque vai contra o princípio do menor privilégio.

    gcloud iam service-accounts create ADMIN_SA \
        --project=PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do seu projetoGoogle Cloud .

  3. Crie as contas de serviço padrão para a autenticação de clusters do Workload Identity:

    As contas de serviço padrão para a autenticação de clusters do Workload Identity têm nomes predeterminados que podem ser personalizados, se quiser.

    gcloud iam service-accounts create baremetal-controller \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create baremetal-cloud-ops \
        --project=PROJECT_ID
    
    gcloud iam service-accounts create baremetal-gcr \
        --project=PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do seu projetoGoogle Cloud .

Adicione associações de políticas de gestão de identidade e de acesso para contas de serviço

  1. Adicione associações de políticas IAM para as funções necessárias para a ADMIN_SA conta de serviço:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/logging.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.dashboardEditor
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountAdmin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
    
  2. Adicione associações de políticas IAM para as funções necessárias para a baremetal-controller conta de serviço:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/gkehub.admin
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.dashboardEditor
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/serviceusage.serviceUsageViewer
    
  3. Adicione associações de políticas IAM para as funções necessárias para a baremetal-cloud-ops conta de serviço:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/logging.logWriter
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.dashboardEditor
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.metricWriter
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/opsconfigmonitoring.resourceMetadata.writer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/stackdriver.resourceMetadata.writer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.viewer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/serviceusage.serviceUsageViewer
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/kubernetesmetadata.publisher
    
  4. Conceda à conta de serviço baremetal-controller a capacidade de gerar chaves de acesso em nome da conta de serviço baremetal-gcr:

    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com \
        --member=serviceAccount:baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator
    

Configure a federação de identidades de cargas de trabalho para os seus clusters

Para conceder Google Cloud acesso com a federação de identidade da força de trabalho para o GKE, cria uma política de autorização do IAM que concede acesso a um recurso específico a um principal que corresponde à identidade da sua aplicação.Google Cloud Neste caso, a Workload Identity Federation concede acesso a operadores específicos no cluster. Para mais informações sobre a federação de identidade da carga de trabalho para o GKE, consulte o artigo Federação de identidade da carga de trabalho na documentação do IAM.

Adicione vinculações de políticas IAM para o operador do cluster

Os seguintes comandos concedem à conta de serviço do Kubernetes anthos-cluster-operator a capacidade de usar a identidade da conta de serviço baremetal-controller e interagir com os recursos Google Cloud em nome do cluster:

  1. Para cada cluster configurado para a autenticação de cluster do Workload Identity (ou planeado para usar a autenticação de cluster do Workload Identity), incluindo o cluster de arranque, conceda anthos-cluster-operator no cluster a capacidade de se fazer passar pela conta de serviço baremetal-controller:

    No comando seguinte, o principalSet consiste no Workload Identity Pool e numa conta de serviço do Kubernetes, anthos-cluster-operator, no espaço de nomes kube-system.

    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-controller@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/anthos-cluster-operator \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    

    Substitua o seguinte:

  2. Valide as associações de políticas para a conta de serviço baremetal-controller:

    gcloud iam service-accounts get-iam-policy \
        baremetal-controller@PROJECT_ID.iam.gserviceaccount.com
    

    A resposta deve ser semelhante à seguinte:

    bindings:
    - members:
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/anthos-cluster-operator
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/anthos-cluster-operator
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/anthos-cluster-operator
      role: roles/iam.workloadIdentityUser
    etag: BwYoN3QLig0=
    version: 1
    

Adicione associações de políticas IAM para os operadores do Google Cloud Observability

Os seguintes comandos concedem às contas de serviço do Kubernetes do Google Cloud Observability a capacidade de usar a identidade da baremetal-cloud-opsconta de serviço Google Cloud e interagir com recursos em nome do cluster:

  • cloud-audit-logging
  • gke-metrics-agent
  • kubestore-collector
  • metadata-agent
  • stackdriver-log-forwarder
  1. Para cada cluster configurado para a autenticação de cluster de identidade de carga de trabalho (ou planeado para usar a autenticação de cluster de identidade de carga de trabalho), incluindo o cluster de arranque, conceda aos operadores do Google Cloud Observability no cluster a capacidade de se fazerem passar pela conta de serviço baremetal-cloud-ops:

    Em cada um dos seguintes comandos, o principalSet consiste no Workload Identity Pool e numa conta de serviço do Kubernetes, como cloud-audit-logging, no espaço de nomes kube-system.

    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/cloud-audit-logging \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/gke-metrics-agent \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/kubestore-collector \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/metadata-agent \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
    gcloud iam service-accounts add-iam-policy-binding \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com \
        --member=principalSet://iam.googleapis.com/projects/PROJECT_NUM/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/attribute.fleetclusteridentity/projects/PROJECT_ID/locations/REGION/memberships/CLUSTER_NAME/ns/kube-system/sa/stackdriver-log-forwarder \
        --role=roles/iam.workloadIdentityUser \
        --project=PROJECT_ID
    
  2. Valide as associações de políticas para a conta de serviço baremetal-cloud-ops:

    gcloud iam service-accounts get-iam-policy \
        baremetal-cloud-ops@PROJECT_ID.iam.gserviceaccount.com
    

    A resposta deve ser semelhante à seguinte:

    bindings:
    - members:
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/cloud-audit-logging
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/gke-metrics-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/kubestore-collector
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/metadata-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/bmctl-admin-ws/kube-system/stackdriver-log-forwarder
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/cloud-audit-logging
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/gke-metrics-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/kubestore-collector
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/metadata-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/admin-cluster/kube-system/stackdriver-log-forwarder
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/cloud-audit-logging
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/gke-metrics-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/kubestore-collector
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/metadata-agent
      - principalSet://iam.googleapis.com/projects/112233445566/locations/global/workloadIdentityPools/my-project.svc.id.goog/attribute.fleetclusteridentity/user-cluster/kube-system/stackdriver-log-forwarder
      role: roles/iam.workloadIdentityUser
    etag: BwYhT4gL-dY=
    version: 1
    

Configuração do cluster

A diferença de configuração de cluster mais óbvia para clusters que usam a autenticação de cluster de identidade de carga de trabalho é que não especifica caminhos para chaves de contas de serviço transferidas.

  1. Quando preencher as definições do cluster no ficheiro de configuração, deixe os caminhos das chaves da conta de serviço em branco na secção de credenciais, conforme mostrado no exemplo seguinte:

    gcrKeyPath:
    sshPrivateKeyPath: /home/USERNAME/.ssh/id_rsa
    gkeConnectAgentServiceAccountKeyPath:
    gkeConnectRegisterServiceAccountKeyPath:
    cloudOperationsServiceAccountKeyPath:
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-CLUSTER_NAME
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: cluster-CLUSTER_NAME
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: 1.30.0-gke.1930
      ...
    
  2. Opcionalmente, defina nomes personalizados para as contas de serviço de autenticação de cluster do Workload Identity:

    A especificação de nomes personalizados permite-lhe usar contas de serviço existentes. Certifique-se de que os nomes das contas de serviço personalizadas que especificar são distintos entre si.

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: CLUSTER_NAME
      namespace: cluster-CLUSTER_NAME
      annotations:
        baremetal.cluster.gke.io/controller-service-account: "CUSTOM_CONTROLLER_GSA"
        baremetal.cluster.gke.io/cloud-ops-service-account: "CUSTOM_CLOUD_OPS_GSA"
        baremetal.cluster.gke.io/gcr-service-account: "CUSTOM_AR_GSA"
    spec:
      type: admin
      profile: default
      anthosBareMetalVersion: 1.30.0-gke.1930
        ...
    

    Substitua o seguinte:

    • CUSTOM_CONTROLLER_GSA: o nome do email da conta de serviço usada pelo agente Connect para manter uma ligação entre o seu cluster e o Google Cloud, e para registar os seus clusters.

    • CUSTOM_CLOUD_OPS_GSA: o nome do email da conta de serviço usada pelo agente do Stackdriver para exportar registos e métricas de clusters para o Cloud Logging e o Cloud Monitoring.

    • CUSTOM_AR_GSA: o nome do email da conta de serviço usada pelo Google Distributed Cloud para transferir imagens de contentores do Artifact Registry.

Operação de cluster

Quando estiver pronto para criar, atualizar ou eliminar um cluster que use a autenticação de cluster de identidade de carga de trabalho, siga estes passos:

  1. Inicie sessão na CLI do Google Cloud:

    gcloud auth login
    
  2. Na estação de trabalho do administrador, crie e transfira uma chave para a conta de serviço ADMIN_SA:

    gcloud iam service-accounts keys create TMP_KEY_FILE_PATH \
        --iam-account=ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com
    

    Substitua TMP_KEY_FILE_PATH pelo caminho, incluindo o nome do ficheiro, do ficheiro de chave transferido.

  3. Autorize o acesso ao Google Cloud com a conta de serviçoADMIN_SA

    gcloud auth activate-service-account ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com \
        --key-file=TMP_KEY_FILE_PATH
    
  4. Elimine o ficheiro de chave JSON transferido:

    rm TMP_KEY_FILE_PATH
    
  5. Na estação de trabalho do administrador, crie uma GCP_ACCESS_TOKENvariável de ambiente com o valor de um token de acesso criado pela conta de serviço ADMIN_SA:

    export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token \
        --impersonate-service-account=ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com)
    

    Por predefinição, o token de acesso tem uma duração de 1 hora.

  6. Verifique se o token é gerado pela ADMIN_SA conta de serviço com o prazo de validade correto:

    curl "https://oauth2.googleapis.com/tokeninfo?access_token=$GCP_ACCESS_TOKEN"
    

    A resposta deve incluir linhas semelhantes às seguintes:

    ...
    "expires_in": "3582",
    "email": "ADMIN_SA@PROJECT_ID.iam.gserviceaccount.com)",
    ...
    

    O valor de expiração está em segundos e deve ser inferior a 3600, o que indica que o token expira em menos de uma hora.

  7. Execute um comando bmctl para criar, atualizar ou eliminar um cluster:

    Se bmctl detetar que a variável de ambiente GCP_ACCESS_TOKEN foi definida, realiza a validação do token. Se o token for válido, o bmctl usa-o para operações de cluster.

    Para clusters que usam a autenticação de cluster de identidade de carga de trabalho, os seguintes comandos requerem que a variável de ambiente GCP_ACCESS_TOKEN seja definida como um token de acesso ativo válido:

    • bmctl create cluster -c CLUSTER_NAME
    • bmctl reset cluster -c CLUSTER_NAME
    • bmctl upgrade cluster -c CLUSTER_NAME

Limitações

Embora a autenticação de cluster do Workload Identity esteja em pré-visualização, as seguintes funcionalidades não são suportadas:

  • Usar um servidor proxy
  • VPC Service Controls
  • Atualize os clusters do modo com chave existentes para usar a autenticação de cluster do Workload Identity

O que se segue?