Esta página aplica-se ao Apigee, mas não ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Esta secção descreve os tipos de chaves de encriptação e como criá-las.
Durante o processo de configuração do Apigee, gera as seguintes chaves de encriptação do Cloud Key Management Service:
Tipo de chave | Quando foi criado | Descrição |
---|---|---|
Chave de encriptação do plano de controlo |
Google Cloud consola:
Interface de linhas de comando (CLI): |
Quando usa a residência de dados, o Apigee usa esta chave para encriptar os dados do Analytics armazenados no BigQuery no projeto do inquilino. Encripta proxies de API, servidores de destino, repositórios de confiança e repositórios de chaves, dados analíticos e tudo o resto partilhado em tempos de execução. O Apigee pede-lhe que faculte duas chaves CMEK do plano de controlo. Esta chave e uma chave de encriptação de dados do consumidor da API. A localização da chave de encriptação do plano de controlo deve corresponder à localização do plano de controlo. |
Chave de encriptação de dados do consumidor da API |
Google Cloud consola:
Interface de linhas de comando (CLI): |
Quando usa a residência de dados, o Apigee precisa de uma chave de região única, além da chave de encriptação do plano de controlo, que é usada para serviços que só estão disponíveis numa única região. Por exemplo, Dataflow e Cloud SQL. A localização da chave de encriptação de dados do consumidor da API deve estar na localização do plano de controlo. |
Chave de encriptação da base de dados de tempo de execução |
Google Cloud consola:
Interface de linhas de comando (CLI): |
Encripta dados de aplicações, como KVMs, cache e segredos do cliente, que são armazenados na base de dados. Existe uma chave de encriptação da base de dados de tempo de execução por organização. Todas as instâncias/regiões numa organização partilham a mesma chave de encriptação da base de dados de tempo de execução.
A chave de encriptação da base de dados de tempo de execução suporta todas as localizações do Cloud KMS
que suportam o Cloud HSM e o Cloud EKM. A Google recomenda que use uma
localização multirregional (como A localização da chave de encriptação da base de dados de tempo de execução deve estar na localização do plano de controlo quando usar a residência de dados. |
Chave de encriptação de disco |
Google Cloud consola:
Interface de linhas de comando (CLI): |
Encripta os dados da instância de tempo de execução antes de serem escritos no disco. Os tipos de dados encriptados incluem o sistema de gestão de chaves (KMS); mapas de valores-chave (KVMs); definições de quotas, contentores e contadores; e todos os dados em cache. Os dados do KMS incluem produtos de API, programadores, apps de programadores, tokens OAuth (incluindo tokens de acesso, tokens de atualização e códigos de autorização) e chaves de API. Esta chave está localizada na mesma região que a instância de tempo de execução. Quando criar uma nova chave, faça corresponder a localização da chave à localização da instância de tempo de execução. Cada combinação de instância/região tem a sua própria chave de encriptação de disco. |
Pontos-chave
Tenha em atenção o seguinte quando criar as chaves de encriptação de disco e de base de dados de tempo de execução:
- A localização da chave de encriptação da base de dados de tempo de execução do Apigee suporta todas as localizações do Cloud KMS que suportam o Cloud HSM e o Cloud EKM.
- A localização da chave de encriptação de disco tem de corresponder à localização da instância de tempo de execução em que a chave é usada.
- Depois de definidas, não pode alterar a localização de nenhuma das chaves.
- Todas as chaves têm de estar num porta-chaves.
- As chaves de diferentes tipos têm de estar em conjuntos de chaves separados. As chaves de encriptação de disco não podem estar no mesmo conjunto de chaves que a chave de encriptação da base de dados de tempo de execução.
-
As chaves têm de ter um
purpose
. Se usar a linha de comandos para gerar as novas chaves, definapurpose
comoencryption
. Se usar a Google Cloud consola, escolha Encriptar/desencriptar simetricamente para o efeito. - As chaves são definidas por um caminho da chave, que usa o seguinte padrão:
projects/PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME
Listar chaves existentes
Se já tiver criado novas chaves de encriptação do Cloud KMS para o Apigee, pode usá-las em vez de criar novas chaves durante a configuração.
Para listar todas as chaves do KMS num conjunto de chaves:
Execute o comando
gcloud kms keys list
:
gcloud kms keys list --keyring KEY_RING_NAME --location KEY_RING_LOCATION
Substitua o seguinte:
-
KEY_RING_NAME: o nome do conjunto de chaves. Por exemplo,
my-key-ring
. -
KEY_RING_LOCATION: a localização física do conjunto de chaves,
Por exemplo,
us-west1
.
Em alternativa, pode ver as suas chaves na Google Cloud consola.
Gerar novas chaves na linha de comandos
Pode criar um conjunto de chaves e uma chave na linha de comandos ou na consola Google Cloud .
Cada tipo de chave tem de ter o seu próprio porta-chaves. Por exemplo, as chaves de encriptação do disco podem ser armazenadas num anel de chaves, mas a chave de encriptação da base de dados de tempo de execução tem de ser armazenada num anel de chaves separado.
Os passos seguintes descrevem como criar um conjunto de chaves e uma chave, e como conceder acesso ao agente de serviço do Apigee para usar a nova chave. Crie anéis de chaves e chaves para o plano de controlo (se estiver a usar a residência de dados), a base de dados de tempo de execução e o disco de tempo de execução.
-
Crie um novo conjunto de chaves com o comando
gcloud kms keyrings create
:Plano de controlo
Quando a residência dos dados está ativada, crie um conjunto de chaves para o plano de controlo e outro para a região de dados do consumidor.
gcloud kms keyrings create CONTROL_PLANE_KEY_RING_NAME \ --location CONTROL_PLANE_LOCATION \ --project PROJECT_ID
gcloud kms keyrings create CONSUMER_DATA_KEY_RING_NAME \ --location CONSUMER_DATA_REGION \ --project PROJECT_ID
Substitua o seguinte:
- CONTROL_PLANE_KEY_RING_NAME: o nome do conjunto de chaves do plano de controlo.
- CONTROL_PLANE_LOCATION: a localização física na qual os dados do plano de controlo do Apigee são armazenados.
- PROJECT_ID: o Google Cloud ID do projeto.
- CONSUMER_DATA_KEY_RING_NAME: o nome do conjunto de chaves de dados do consumidor.
- CONSUMER_DATA_REGION: uma sub-região da região do plano de controlo. Tem de especificar a CONTROL_PLANE_LOCATION e a CONSUMER_DATA_REGION.
Base de dados do tempo de execução
gcloud kms keyrings create RUNTIMEDB_KEY_RING_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --project PROJECT_ID
Substitua o seguinte:
- RUNTIMEDB_KEY_RING_NAME: o nome do conjunto de chaves da base de dados que está a criar.
- RUNTIMEDB_KEY_LOCATION: a localização física do conjunto de chaves da base de dados.
- PROJECT_ID: o Google Cloud ID do projeto.
A localização da chave de encriptação do Apigee é compatível com todas as localizações do Cloud KMS que suportam o Cloud HSM e o Cloud EKM.
Disco do tempo de execução
gcloud kms keyrings create RUNTIMEDISK_KEY_RING_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --project PROJECT_ID
Substitua o seguinte:
- RUNTIMEDISK_KEY_RING_NAME: o nome do conjunto de chaves do disco que está a criar.
- RUNTIMEDISK_KEY_LOCATION: a localização física do conjunto de chaves do disco.
- PROJECT_ID: o Google Cloud ID do projeto.
Verifique se o anel de chaves do disco está definido para a mesma localização que a instância. Cada instância e anel de chaves devem ter a sua própria localização.
gcloud kms keyrings list \ --location \ --project $PROJECT_ID
gcloud kms keyrings describe $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
-
Crie uma chave com o comando
kms keys create
:Plano de controlo
Quando a residência dos dados está ativada, crie um conjunto de chaves para o plano de controlo e outro para a região de dados do consumidor.
gcloud kms keys create CONTROL_PLANE_KEY_NAME \ --keyring CONTROL_PLANE_KEY_RING_NAME \ --location CONTROL_PLANE_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
gcloud kms keys create CONSUMER_DATA_KEY_NAME \ --keyring CONSUMER_DATA_KEY_RING_NAME \ --location CONSUMER_DATA_REGION \ --purpose "encryption" \ --project PROJECT_ID
Substitua o seguinte:
- CONTROL_PLANE_KEY_NAME: o nome da chave do plano de controlo.
- CONTROL_PLANE_KEY_RING_NAME: o nome do conjunto de chaves do plano de controlo.
- CONTROL_PLANE_LOCATION: a localização física na qual os dados do plano de controlo do Apigee são armazenados.
- PROJECT_ID: o Google Cloud ID do projeto.
- CONSUMER_DATA_KEY_NAME: o nome da chave de dados do consumidor.
- CONSUMER_DATA_KEY_RING_NAME: o nome do conjunto de chaves de dados do consumidor.
- CONSUMER_DATA_REGION: uma sub-região da região do plano de controlo. Tem de especificar a CONTROL_PLANE_LOCATION e a CONSUMER_DATA_REGION.
Base de dados do tempo de execução
gcloud kms keys create RUNTIMEDB_KEY_NAME \ --keyring RUNTIMEDB_KEY_RING_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
Substitua o seguinte:
- RUNTIMEDB_KEY_NAME: o nome da chave da base de dados que está a criar.
- RUNTIMEDB_KEY_RING_NAME: o nome do conjunto de chaves da base de dados que está a criar.
- RUNTIMEDB_KEY_LOCATION: a localização física do conjunto de chaves da base de dados.
- PROJECT_ID: o Google Cloud ID do projeto.
Disco do tempo de execução
gcloud kms keys create RUNTIMEDISK_KEY_NAME \ --keyring RUNTIMEDISK_KEY_RING_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --purpose "encryption" \ --project PROJECT_ID
Substitua o seguinte:
- RUNTIMEDISK_KEY_NAME: o nome da chave do disco que está a criar.
- RUNTIMEDISK_KEY_RING_NAME: o nome do conjunto de chaves do disco que está a criar.
- RUNTIMEDISK_KEY_LOCATION: a localização física do conjunto de chaves do disco.
- PROJECT_ID: o Google Cloud ID do projeto.
Este comando cria a chave e adiciona-a ao conjunto de chaves.
Quando se refere a uma chave, use o ID da chave.
-
Conceda acesso ao agente do serviço Apigee para usar a nova chave através do comando
gcloud kms keys add-iam-policy-binding
:Plano de controlo
Quando a residência dos dados está ativada, crie um conjunto de chaves para o plano de controlo e outro para a região de dados do consumidor.
gcloud kms keys add-iam-policy-binding CONTROL_PLANE_KEY_NAME \ --location CONTROL_PLANE_LOCATION \ --keyring CONTROL_PLANE_KEY_RING_NAME \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
gcloud kms keys add-iam-policy-binding CONSUMER_DATA_KEY_NAME \ --location CONSUMER_DATA_REGION \ --keyring CONSUMER_DATA_KEY_RING_NAME \ --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com" \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Substitua o seguinte:
- CONTROL_PLANE_KEY_NAME: o nome da chave do plano de controlo.
- CONTROL_PLANE_LOCATION: a localização física na qual os dados do plano de controlo do Apigee são armazenados.
- CONTROL_PLANE_KEY_RING_NAME: o nome do conjunto de chaves do plano de controlo.
- PROJECT_NUMBER: o Google Cloud número do projeto.
- PROJECT_ID: o Google Cloud ID do projeto.
- CONSUMER_DATA_KEY_NAME: o nome da chave de dados do consumidor.
- CONSUMER_DATA_REGION: uma sub-região da região do plano de controlo. Tem de especificar a CONTROL_PLANE_LOCATION e a CONSUMER_DATA_REGION.
- CONSUMER_DATA_KEY_RING_NAME: o nome do conjunto de chaves de dados do consumidor.
Base de dados do tempo de execução
gcloud kms keys add-iam-policy-binding RUNTIMEDB_KEY_NAME \ --location RUNTIMEDB_KEY_LOCATION \ --keyring RUNTIMEDB_KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Substitua o seguinte:
- RUNTIMEDB_KEY_NAME: o nome da chave da base de dados que está a criar.
- RUNTIMEDB_KEY_RING_NAME: o nome do conjunto de chaves da base de dados que está a criar.
- RUNTIMEDB_KEY_LOCATION: a localização física do conjunto de chaves da base de dados.
- PROJECT_NUMBER: o Google Cloud número do projeto.
- PROJECT_ID: o Google Cloud ID do projeto.
Disco do tempo de execução
gcloud kms keys add-iam-policy-binding RUNTIMEDISK_KEY_NAME \ --location RUNTIMEDISK_KEY_LOCATION \ --keyring RUNTIMEDISK_KEY_RING_NAME \ --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --project PROJECT_ID
Substitua o seguinte:
- RUNTIMEDISK_KEY_NAME: o nome da chave do disco que está a criar.
- RUNTIMEDISK_KEY_RING_NAME: o nome do conjunto de chaves do disco que está a criar.
- RUNTIMEDISK_KEY_LOCATION: a localização física do conjunto de chaves do disco.
- PROJECT_NUMBER: o Google Cloud número do projeto.
- PROJECT_ID: o Google Cloud ID do projeto.
Este comando associa a chave ao agente de serviço do Apigee.
Após a conclusão bem-sucedida deste pedido,
gcloud
responde com algo semelhante ao seguinte:Updated IAM policy for key [runtime]. bindings: - members: - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com role: roles/cloudkms.cryptoKeyEncrypterDecrypter etag: BwWqgEuCuwk= version: 1
Se receber um erro como o seguinte:
INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.
Certifique-se de que usou o número do projeto e não o nome do projeto no endereço de email da conta de serviço.
Para verificar se a chave está associada ao agente do serviço Apigee:
gcloud kms keys get-iam-policy $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
gcloud kms keys describe $DISK_KEY_NAME \ --keyring $DISK_KEY_RING_NAME \ --location \ --project $PROJECT_ID
O nome do conjunto de chaves tem de ser exclusivo da sua organização. Se criar regiões adicionais, os nomes dos conjuntos de chaves dessas regiões não podem ser iguais aos nomes dos conjuntos de chaves existentes.
Gerar novas chaves através da consola Google Cloud
Pode gerar novas chaves através da consola, conforme descrito no artigo Crie uma chave de encriptação simétrica.
Quando usa a consola para criar uma nova chave:
- Para a chave de encriptação da base de dados de tempo de execução, defina a localização para qualquer localização do Cloud KMS que suporte o Cloud HSM e o Cloud EKM. A IU não lhe permite escolher outra localização para a chave, pelo que vai corresponder ao que escolher no porta-chaves.
- Depois de criar a chave, obtenha o caminho da chave no painel Chaves criptográficas clicando em Mais junto à chave e, de seguida, selecionando Copiar nome do recurso.
Obtenha o ID da chave
Quando faz referência a um recurso do Cloud Key Management Service através da API Cloud KMS ou da CLI Google Cloud, usa o ID do recurso. Pode
obter o ID da chave com o comando
gcloud kms keys list
:
Plano de controlo
Quando a residência de dados está ativada, existe um anel de chaves para o plano de controlo e outro para a região de dados do consumidor.
gcloud kms keys list \ --location=CONTROL_PLANE_LOCATION \ --keyring=CONTROL_PLANE_KEY_RING_NAME \ --project=PROJECT_ID
gcloud kms keys list \ --location=CONSUMER_DATA_REGION \ --keyring=CONSUMER_DATA_KEY_RING_NAME \ --project=PROJECT_ID
O ID da chave tem a seguinte sintaxe (semelhante a um caminho de ficheiro):
projects/PROJECT_ID/locations/CONTROL_PLANE_LOCATION/keyRings/CONTROL_PLANE_KEY_RING_NAME/cryptoKeys/CONTROL_PLANE_KEY_NAME
Base de dados do tempo de execução
gcloud kms keys list \ --location=RUNTIMEDB_KEY_LOCATION \ --keyring=RUNTIMEDB_KEY_RING_NAME \ --project=PROJECT_ID
O ID da chave tem a seguinte sintaxe (semelhante a um caminho de ficheiro):
projects/PROJECT_ID/locations/RUNTIMEDB_KEY_LOCATION/keyRings/RUNTIMEDB_KEY_RING_NAME/cryptoKeys/RUNTIMEDB_KEY_NAME
Disco do tempo de execução
gcloud kms keys list \ --location=RUNTIMEDISK_KEY_LOCATION \ --keyring=RUNTIMEDISK_KEY_RING_NAME \ --project=PROJECT_ID
O ID da chave tem a seguinte sintaxe (semelhante a um caminho de ficheiro):
projects/PROJECT_ID/locations/RUNTIMEDISK_KEY_LOCATION/keyRings/RUNTIMEDISK_KEY_RING_NAME/cryptoKeys/RUNTIMEDISK_KEY_NAME
Por exemplo:
NAME: projects/my-project/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-key PURPOSE: ENCRYPT_DECRYPT ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION PROTECTION_LEVEL: SOFTWARE LABELS: PRIMARY_ID: 1 PRIMARY_STATE: ENABLED
Também pode obter o ID da chave na Google Cloud consola. Para mais informações, consulte Como obter um ID de recurso do Cloud KMS.