Esta página mostra como configurar o plano de controlo do cluster do Google Kubernetes Engine (GKE) com autoridades de certificação (ACs) e chaves que gere. Estas orientações destinam-se a administradores de segurança que tenham requisitos organizacionais específicos de conformidade ou políticas para o controlo da emissão e da assinatura de credenciais.
Esta página descreve uma parte de um conjunto de funcionalidades opcionais do plano de controlo no GKE que lhe permitem realizar tarefas como validar a postura de segurança do seu plano de controlo ou configurar a encriptação e a assinatura de credenciais no plano de controlo através de chaves que gere. Para mais detalhes, consulte o artigo Acerca da autoridade do plano de controlo do GKE.
Por predefinição, Google Cloud aplica várias medidas de segurança ao plano de controlo gerido. Esta página descreve as capacidades opcionais que lhe dão mais visibilidade ou controlo sobre o plano de controlo do GKE.
Já deve estar familiarizado com os seguintes conceitos:
- Pedidos de assinatura de certificados (CSRs)
- Autoridades de certificação (ACs)
- etcd
- Arquitetura do cluster do GKE
Componentes de credenciais do plano de controlo
Os clusters do GKE usam chaves e ACs específicas para emitir credenciais no cluster, como certificados X.509 ou tokens ServiceAccount. Pode criar chaves no Cloud Key Management Service (Cloud KMS) e ACs no Certificate Authority Service (serviço de AC) e configurar os seus clusters para usar estes recursos em vez de Google Cloudchaves e ACs geridas.
Para saber mais acerca dos componentes específicos que cria, consulte o artigo ACs e chaves autogeridas.
Utilização com outras funcionalidades de autoridade do plano de controlo do GKE
A autoridade do plano de controlo do GKE oferece as seguintes funcionalidades relacionadas com chaves autogeridas:
- Execute as suas próprias autoridades de certificação (ACs) e chaves (esta página)
- Encriptar componentes do plano de controlo
Objetivos
- Crie chaves no Cloud KMS
- Crie ACs no serviço de AC
- Conceda funções de gestão de identidade e de acesso (IAM) ao agente do serviço do GKE
- Crie um cluster do GKE que use as suas ACs e chaves
- Valide se o cluster usa as suas ACs e chaves
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização prevista,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, Certificate Authority Service, and Cloud Key Management Service APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable container.googleapis.com
privateca.googleapis.com cloudkms.googleapis.com -
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, Certificate Authority Service, and Cloud Key Management Service APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable container.googleapis.com
privateca.googleapis.com cloudkms.googleapis.com - Certifique-se de que o seu ambiente é elegível para usar as funcionalidades de autoridade do plano de controlo do GKE. Para ativar estas funcionalidades, contacte a sua Google Cloud equipa de vendas.
- Para acompanhar de forma fiável a emissão e a utilização de credenciais, certifique-se de que os seguintes registos de auditoria de acesso a dados estão ativados:
- API Cloud Key Management Service (KMS):
DATA_READ - Certificate Authority Service:
ADMIN_READ
Para ativar estes tipos de registos, consulte o artigo Ative os registos de auditoria de acesso a dados.
- API Cloud Key Management Service (KMS):
-
Criar chaves do Cloud KMS:
Administrador do Cloud KMS (
roles/cloudkms.admin) no seu projeto de chaves -
Criar grupos de ACs e ACs de raiz:
Administrador do serviço de AC (
roles/privateca.admin) no seu projeto de chaves -
Criar clusters do GKE:
Administrador do cluster do Kubernetes Engine (
roles/container.clusterAdmin) no projeto do cluster - Só pode usar chaves do Cloud KMS. Não pode usar outro fornecedor de KMS nem outro fornecedor de encriptação.
- As chaves do Cloud External Key Manager (Cloud EKM) não são suportadas.
- Só pode usar ACs do serviço de AC.
As regiões e as zonas nas quais pode usar a autoridade do plano de controlo do GKE dependem de querer usar também funcionalidades específicas, da seguinte forma:
- Para encriptar os discos de arranque do plano de controlo com uma chave de encriptação gerida pelo cliente, o cluster
tem de estar numa das seguintes regiões:
asia-east1asia-northeast1asia-southeast1europe-west1europe-west4us-central1us-east1us-east4us-east5us-south1us-west1us-west3us-west4
- Para usar nós do GKE confidenciais com a autoridade do plano de controlo do GKE, o cluster tem de estar numa região que suporte o modo confidencial para o Hyperdisk Balanced.
Se não usar estas funcionalidades, pode usar a autoridade do plano de controlo do GKE em qualquer Google Cloud localização.
- Para encriptar os discos de arranque do plano de controlo com uma chave de encriptação gerida pelo cliente, o cluster
tem de estar numa das seguintes regiões:
- Projeto principal: contém todas as chaves e ACs.
- Projeto do cluster: contém os seus clusters do GKE.
KEY_RING_NAME: um nome para o seu conjunto de chaves.KEY_PROJECT_ID: o ID do projeto do seu projeto principal.LOCATION: a região Google Cloud onde quer criar o conjunto de chaves. Tem de ser a mesma região onde o seu cluster do GKE está localizado.- Se tiver um conjunto de chaves existente no seu projeto de chaves, pode usá-lo para armazenar todas as chaves que criar para utilização com o seu cluster.
- O anel de chaves tem de estar na mesma Google Cloud localização que o cluster para minimizar a latência.
- As chaves têm de especificar
asymmetric-signingcomo objetivo principal. - Use os seguintes algoritmos com base no tipo de chave:
- Chaves de assinatura de contas de serviço: um algoritmo PKCS1 de assinatura RSA forte, como
rsa-sign-pkcs1-4096-sha256oursa-sign-pkcs1-3072-sha256. - Chaves da autoridade de certificação: um algoritmo forte, como
ec-sign-p256-sha256.
- Chaves de assinatura de contas de serviço: um algoritmo PKCS1 de assinatura RSA forte, como
- As chaves de hardware do HSM na nuvem são suportadas, mas o
softwarenível de proteção é suficiente para a maioria dos exemplos de utilização. Para ver detalhes sobre as chaves de hardware, consulte o artigo HSM na nuvem. - Não modifique a duração predefinida para a destruição de chaves.
- O GKE não impede a eliminação de chaves do Cloud KMS, incluindo chaves do serviço de AC, que estão a ser usadas pelo cluster. Antes de eliminar chaves ou ACs, certifique-se de que os recursos não estão a ser usados.
Crie a chave de assinatura da conta de serviço do Kubernetes, que também especifica como a chave de validação da conta de serviço durante a criação do cluster:
gcloud kms keys create sa-signing-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=rsa-sign-pkcs1-4096-sha256 \ --project=KEY_PROJECT_IDSubstitua
KEY_PROJECT_IDpelo ID do projeto da chave dedicada.Crie a chave da AC de raiz do cluster:
gcloud kms keys create cluster-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_IDCrie a chave da AC de raiz do par etcd:
gcloud kms keys create etcd-peer-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_IDCrie a chave da AC raiz da API etcd:
gcloud kms keys create etcd-api-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_IDCrie a chave da AC de raiz de agregação:
gcloud kms keys create aggregation-ca-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --purpose="asymmetric-signing" \ --protection-level=hsm \ --default-algorithm=ec-sign-p256-sha256 \ --project=KEY_PROJECT_IDCrie o grupo de CA do cluster:
gcloud privateca pools create cluster-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certO sinalizador
--no-publish-crle o sinalizador--no-publish-ca-certsão opcionais. A omissão destas flags publica certificados num segmento do Cloud Storage. Para ver detalhes, consulte o artigo Ative a publicação de certificados da AC e LCRs para ACs num conjunto de ACs.Crie a AC de raiz do cluster:
gcloud privateca roots create cluster-root-ca \ --pool=cluster-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/cluster-ca-key/cryptoKeyVersions/1 \ --subject="CN=cluster-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enableSubstitua
ORGANIZATIONpelo nome da sua organização.Crie o grupo de ACs de pares etcd:
gcloud privateca pools create etcd-peer-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certCrie a AC de raiz do par etcd:
gcloud privateca roots create etcd-peer-root-ca \ --pool=etcd-peer-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/etcd-peer-ca-key/cryptoKeyVersions/1 \ --subject="CN=etcd-peer-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enableCrie o grupo de ACs da API etcd:
gcloud privateca pools create etcd-api-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certCrie a AC de raiz da API etcd:
gcloud privateca roots create etcd-api-root-ca \ --pool=etcd-api-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/etcd-api-ca-key/cryptoKeyVersions/1 \ --subject="CN=etcd-api-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enableCrie o grupo de CA de agregação:
gcloud privateca pools create aggregation-ca-pool \ --location=LOCATION \ --tier=enterprise \ --project=KEY_PROJECT_ID \ --no-publish-crl --no-publish-ca-certCrie a AC de raiz de agregação:
gcloud privateca roots create aggregation-root-ca \ --pool=aggregation-ca-pool \ --location=LOCATION \ --kms-key-version=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/aggregation-ca-key/cryptoKeyVersions/1 \ --subject="CN=aggregation-ca, O=ORGANIZATION" \ --project=KEY_PROJECT_ID \ --auto-enable- Kubernetes Engine KMS Crypto Key User
(
roles/container.cloudKmsKeyUser) - Gestor de certificados do serviço de AC
(
roles/privateca.certificateManager) Encontre o número do projeto do seu projeto de cluster:
gcloud projects describe CLUSTER_PROJECT_ID \ --format='value(projectNumber)'Substitua
CLUSTER_PROJECT_IDpelo ID do projeto do cluster.Conceda a função de utilizador da chave criptográfica do KMS do Kubernetes Engine à chave de assinatura da conta de serviço que criou em Criar chaves:
gcloud kms keys add-iam-policy-binding sa-signing-key \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/container.cloudKmsKeyUser \ --project=KEY_PROJECT_IDSubstitua
CLUSTER_PROJECT_NUMBERpelo número do projeto do cluster.Conceda a função Gestor de certificados do serviço de AC nos conjuntos de ACs que criou em Crie as ACs:
gcloud privateca pools add-iam-policy-binding cluster-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID gcloud privateca pools add-iam-policy-binding etcd-peer-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID gcloud privateca pools add-iam-policy-binding etcd-api-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_ID gcloud privateca pools add-iam-policy-binding aggregation-ca-pool \ --location=LOCATION \ --member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role=roles/privateca.certificateManager \ --project=KEY_PROJECT_IDAciona a criação do agente de serviço do serviço de AC.
gcloud beta services identity create --service=privateca.googleapis.com \ --project=KEY_PROJECT_IDEncontre o número do projeto do seu projeto principal:
gcloud projects describe KEY_PROJECT_ID \ --format='value(projectNumber)'Conceda a função Visualizador (
roles/viewer) e a função Signatário/validador de CryptoKey do Cloud KMS (roles/cloudkms.signerVerifier) a todas as chaves da CA raiz que criou na secção Criar chaves:for key in cluster-ca-key etcd-peer-ca-key etcd-api-ca-key aggregation-ca-key do gcloud kms keys add-iam-policy-binding $key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --role=roles/viewer \ --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \ --project=KEY_PROJECT_ID gcloud kms keys add-iam-policy-binding $key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --role=roles/cloudkms.signerVerifier \ --member="serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com" \ --project=KEY_PROJECT_ID doneSubstitua
KEY_PROJECT_NUMBERpelo número do projeto principal da saída do passo anterior.Este comando é um ciclo
forque itera as chaves da AC raiz, concedendo cada função nessa chave ao agente do serviço de AC. Se usou nomes diferentes para as chaves da AC raiz, execute estes comandos manualmente para cada chave.- Caminho para uma versão de chave no Cloud KMS para a chave de assinatura da conta de serviço que criou em Criar chaves. Especifica este caminho para o sinalizador
service-account-signing-keyse para o sinalizadorservice-account-verification-keys. - Caminho para cada um dos conjuntos de CA que criou em Crie as CAs.
Encontre o caminho para a versão mais recente da chave de assinatura da conta de serviço ativada:
gcloud kms keys versions list \ --key=sa-signing-key \ --keyring=KEY_RING_NAME \ --location=LOCATION \ --project=KEY_PROJECT_ID \ --filter="STATE=ENABLED" --sort-by=~ --format="value(name)" | sed 1qSubstitua
KEY_PROJECT_IDpelo ID do projeto do projeto principal.O resultado é semelhante ao seguinte:
projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1Encontre os caminhos para cada um dos conjuntos de ACs que criou:
gcloud privateca pools list --format="get(name)" \ --project=KEY_PROJECT_IDO resultado é semelhante ao seguinte:
projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-poolCertifique-se de que o resultado contém todos os conjuntos de ACs que criou para o GKE.
Para configurar apenas as ACs e as chaves que criou neste tutorial, execute o seguinte comando:
gcloud container clusters create example-cluster \ --location=LOCATION \ --project=CLUSTER_PROJECT_ID \ --cluster-version=VERSION \ --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --cluster-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --etcd-api-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --aggregation-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-poolSubstitua o seguinte:
CLUSTER_PROJECT_ID: o ID do projeto do projeto do cluster.VERSION: a versão do GKE do cluster. Tem de ser 1.31.1-gke.1846000 ou posterior.
Para configurar as ACs e as chaves, bem como a encriptação do disco de arranque do plano de controlo e a encriptação do etcd, faça o seguinte:
- Execute todos os passos de configuração principais em Encriptar discos de arranque do etcd e do plano de controlo.
- Encontre os caminhos para cada uma das chaves através das instruções em Use chaves de encriptação num cluster.
Crie um cluster:
gcloud container clusters create example-cluster \ --location=LOCATION \ --project=CLUSTER_PROJECT_ID \ --cluster-version=VERSION \ --service-account-signing-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --service-account-verification-keys=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1 \ --cluster-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --etcd-peer-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --etcd-api-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --aggregation-ca=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool \ --control-plane-disk-encryption-key=PATH_TO_DISK_KEY \ --gkeops-etcd-backup-encryption-key=PATH_TO_ETCD_BACKUP_KEYSubstitua o seguinte:
CLUSTER_PROJECT_ID: o ID do projeto do projeto de cluster.VERSION: a versão do GKE do cluster. Tem de ser 1.31.1-gke.1846000 ou posterior.PATH_TO_DISK_KEY: o caminho para a chave de encriptação do disco.PATH_TO_ETCD_BACKUP_KEY: o caminho para a chave de encriptação de cópia de segurança interna do etcd.
Também pode usar estas flags quando cria um novo cluster no modo padrão.
Na Google Cloud consola, aceda à página Explorador de registos:
Especifique a seguinte consulta:
resource.type="gke_cluster" resource.labels.cluster_name="CLUSTER_NAME" resource.labels.location="CLUSTER_LOCATION" protoPayload.serviceName="container.googleapis.com" protoPayload.methodName=~"google.container.v(1|1alpha1|1beta1).ClusterManager.CreateCluster" protoPayload.request.cluster.userManagedKeysConfig:*protoPayload.request.cluster.userManagedKeysConfig:*filtra os resultados para registos de criação de clusters que incluem chaves e ACs que gere.Clique em Executar consulta.
Elimine o cluster:
gcloud container clusters delete example-cluster \ --location=LOCATION \ --project=CLUSTER_PROJECT_IDDesative as ACs de raiz:
gcloud privateca roots disable cluster-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots disable etcd-peer-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots disable etcd-api-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots disable aggregation-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool \ --project=KEY_PROJECT_IDElimine as ACs de raiz:
gcloud privateca roots delete cluster-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots delete etcd-peer-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots delete etcd-api-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool \ --project=KEY_PROJECT_ID gcloud privateca roots delete aggregation-root-ca \ --location=LOCATION \ --pool=projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool \ --project=KEY_PROJECT_IDElimine os grupos de CA:
gcloud privateca pools delete cluster-ca-pool --location=LOCATION \ --project=KEY_PROJECT_ID gcloud privateca pools delete etcd-peer-ca-pool --location=LOCATION \ --project=KEY_PROJECT_ID gcloud privateca pools delete etcd-api-ca-pool --location=LOCATION \ --project=KEY_PROJECT_ID gcloud privateca pools delete aggregation-ca-pool --location=LOCATION \ --project=KEY_PROJECT_IDElimine as chaves:
gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=sa-signing-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=cluster-ca-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=etcd-peer-ca-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=etcd-api-ca-key \ --project=KEY_PROJECT_ID gcloud kms keys versions destroy 1 \ --location=LOCATION \ --keyring=KEY_RING_NAME \ --key=aggregation-ca-key \ --project=KEY_PROJECT_ID- Monitorize a utilização da identidade desde o momento da emissão
- Alterne as ACs e as chaves de assinatura da conta de serviço (pré-visualização)
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.
Funções e autorizações necessárias
Para receber as autorizações de que precisa para executar as suas próprias ACs e chaves, peça ao seu administrador que lhe conceda as seguintes funções de IAM:
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Requisitos
Tem de usar a versão 1.31.1-gke.1846000 ou posterior do GKE.
Limitações
Aplicam-se as seguintes limitações:
Prepare o ambiente
Nesta secção, identifica os Google Cloud projetos que vai usar neste tutorial e cria um conjunto de chaves no Cloud KMS para guardar as suas chaves.
Identifique projetos
Recomendamos que use Google Cloud projetos separados da seguinte forma:
Opcionalmente, pode usar o mesmo projeto para as chaves, as ACs e os clusters do GKE, mas recomendamos que use projetos separados para que as equipas que gerem operações criptográficas na sua organização estejam separadas das equipas que gerem operações de cluster.
Crie um conjunto de chaves
Crie um conjunto de chaves no projeto de chaves para conter todas as chaves de um cluster específico. Tem de criar o conjunto de chaves na mesma localização que o cluster do GKE.
Execute o seguinte comando:
gcloud kms keyrings create KEY_RING_NAME \
--location=LOCATION \
--project=KEY_PROJECT_ID
Substitua o seguinte:
Crie chaves
Para cada uma das autoridades de credenciais, como chaves de contas de serviço e ACs, cria uma chave através do Cloud KMS. Esta secção mostra-lhe como criar as chaves que o GKE usa para assinar e validar credenciais no cluster.
Pode especificar as suas próprias propriedades para estas chaves, consoante as necessidades da sua organização. Para ver detalhes, consulte a página Crie uma chave
e a
projects.locations.keyRings.cryptoKeys
referência da API.
Considere o seguinte quando criar estes recursos no Cloud KMS:
Para criar as chaves, execute os seguintes comandos:
Crie as CAs
Depois de criar as chaves para cada uma das funções do plano de controlo, use cada chave para criar os conjuntos de ACs e as ACs raiz correspondentes através do serviço de AC:
Conceda funções de IAM ao agente do serviço GKE
O agente de serviço do GKE requer acesso aos recursos que criou no Cloud KMS e no CA Service. O agente de serviço usa estes recursos para assinar, validar e emitir credenciais no cluster. Pode usar as seguintes funções de IAM predefinidas:
Para conceder estas funções ao agente de serviço do GKE, faça o seguinte:
Conceda funções adicionais quando não estiver a usar a CLI gcloud
Esta secção descreve os passos de configuração adicionais que tem de realizar se planear configurar as suas ACs e chaves através de um cliente como o Terraform ou a Google Cloud consola em vez de usar a CLI gcloud. Se usar a CLI gcloud, ignore esta secção e aceda à secção Configure ACs e chaves num novo cluster.
Quando usa a CLI gcloud para configurar as ACs e as chaves, conforme descrito nesta página, a CLI gcloud cria e configura automaticamente um agente de serviço para o serviço de AC e concede funções do IAM ao agente de serviço. No entanto, se usar um cliente como o Terraform ou a Google Cloud consola para configurar o seu Google Cloud ambiente, tem de realizar estes passos de configuração manualmente da seguinte forma para o seu projeto de chave:
Configure ACs e chaves num novo cluster
Depois de criar chaves, conjuntos de ACs, ACs de raiz e conceder funções de IAM ao agente de serviço do GKE, crie um novo cluster que use estes recursos.
As flags que especificar no comando de criação de clusters requerem os seguintes caminhos de recursos como valores:
Para configurar um novo cluster para usar as suas chaves e ACs, siga estes passos:
Crie um cluster
Nesta secção, cria um cluster com diferentes opções especificadas, dependendo das funcionalidades de autoridade do plano de controlo do GKE que quer configurar. Só pode configurar estas funcionalidades num cluster durante a criação do cluster. Os seguintes comandos criam clusters do modo padrão. Em alternativa, para criar clusters do modo de piloto automático, use as mesmas flags com o comando gcloud container clusters create-auto.
Verifique se o cluster usa as chaves e as ACs especificadas
Esta secção mostra como validar as chaves e as ACs que foram usadas durante a criação do cluster. Pode realizar esta validação através do Cloud Logging ou da CLI do Google Cloud.
Use o registo para validar chaves e ACs
Para validar as chaves e as ACs através do registo, faça o seguinte:
Nos resultados, expanda o registo de criação de clusters. Verifique se os caminhos para as chaves e as ACs são os mesmos que criou para esse cluster, como no exemplo seguinte:
# lines omitted for clarity
userManagedKeysConfig: {
aggregationCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool"
clusterCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool"
etcdApiCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool"
etcdPeerCa: "projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool"
serviceAccountSigningKeys: [
0: "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
]
serviceAccountVerificationKeys: [
0: "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1"
]
}
Use a CLI gcloud para validar chaves e ACs
Para verificar se o cluster usa as ACs e as chaves que criou, execute o seguinte comando:
gcloud container clusters describe example-cluster \
--location=LOCATION \
--project=CLUSTER_PROJECT_ID
A saída deve incluir o campo userManagedKeysConfig, como no
seguinte exemplo:
# lines omitted for clarity
userManagedKeysConfig:
sa-signing-key: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
sa-verification-key: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/sa-signing-key/cryptoKeyVersions/1
cluster-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/cluster-ca-pool
etcd-peer-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-peer-ca-pool
etcd-api-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/etcd-api-ca-pool
aggregation-ca: projects/KEY_PROJECT_ID/locations/LOCATION/caPools/aggregation-ca-pool
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Elimine os projetos
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimine recursos individuais
Não pode eliminar conjuntos de chaves do Cloud KMS. No entanto, os porta-chaves não incorrem em custos adicionais.