Key Protect integração

2ª geração

Os dados que você armazena no Cloud Databases são criptografados por padrão, por meio de chaves geradas aleatoriamente. Para controlar as chaves de criptografia, você pode utilizar a opção “Traga sua própria chave” (BYOK) por meio de IBM Key Protect e usar uma de suas próprias chaves para criptografar seus bancos de dados e backups.

Para começar, configure Key Protect na sua conta do IBM Cloud.

Criando ou incluindo uma chave no Key Protect

Acesse sua instância do Key Protect e gere ou insira uma chave.

Concessão de autorização de serviço na interface do usuário

Autorize o Key Protect para uso com as implementações do Cloud Databases:

  1. Abra o painel do IBM Cloud.
  2. Na barra de menus, clique em Gerenciar-> Acesso (IAM).
  3. Na navegação lateral, clique em Autorizações.
  4. Clique em Criar.
  5. No menu Serviço de origem, selecione o serviço da implementação. Por exemplo, Databases for PostgreSQL ou Databases for MongoDB.
  6. No menu de recursos do serviço “Source”, selecione “Todos os recursos ”.
  7. No menu Serviço de destino, selecione Key Protect.
  8. Selecione ou mantenha o valor padrão “Conta” como o grupo de recursos para o Serviço de Destino
  9. No menu ID da Instância do serviço de destino, selecione as instâncias de serviço para autorizar.
  10. Ative a função Leitor.
  11. Para usar o recurso “Traga sua própria chave” (BYOK), marque a caixa “Habilitar autorizações a serem delegadas ” na seção “Autorizar serviços dependentes ”.
  12. Clique em Autorizar.

Se a autorização de serviço não estiver presente antes de provisionar a sua implementação com uma chave, a provisão falhará.

Se você quiser definir uma política de autorização mais restritiva, configure sua política para um CRN de chave raiz explícito ou para uma instância específica do Key Protect. As restrições aplicadas aos chaveiros “ Key Protect ” não são compatíveis no momento.

Concessão de autorização de serviço na CLI

  1. Crie uma política de autorização para permitir que o serviço Cloud Databases acesse a instância do serviço Key Protect na CLI. Para obter a lista completa de argumentos, consulte a referência da CLI do IAM.
ibmcloud iam authorization-policy-create <SERVICE-NAME> kms "Reader,AuthorizationDelegator"

Se a autorização de serviço não estiver presente antes de provisionar a sua implementação com uma chave, a provisão falhará.

Se você quiser definir uma política de autorização mais restritiva, configure sua política para um CRN de chave raiz explícito ou para uma instância específica do Key Protect. As restrições aplicadas aos chaveiros “ Key Protect ” não são compatíveis no momento.

Concessão de autorização de serviço por meio da API REST

  1. Crie uma política de autorização para permitir que o serviço Cloud Databases acesse a instância do serviço Key Protect por meio da API REST do IAM.

Para obter uma referência completa da API, consulte a API de gerenciamento de políticas do IAM.

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
  "type": "authorization",
  "subjects": [
      {
          "attributes": [
              {
                  "name": "accountId",
                  "value": "CUSTOMER_ACCOUNT_ID"
              },
              {
                  "name": "serviceName",
                  "value": "<SERVICE-NAME>"
              }
          ]
      }
  ],
  "roles": [
      {
        "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
      },
      {
        "role_id": "crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"
      }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "operator": "stringEquals",
                    "value": "CUSTOMER_ACCOUNT_ID"
                },
                {
                    "name": "serviceName",
                    "operator": "stringEquals",
                    "value": "kms"
                }
            ]
        }
    ]
}'

Se a autorização de serviço não estiver presente antes de provisionar a sua implementação com uma chave, a provisão falhará.

Se você quiser definir uma política de autorização mais restritiva, configure sua política para um CRN de chave raiz explícito ou para uma instância específica do Key Protect. As restrições aplicadas aos chaveiros “ Key Protect ” não são compatíveis no momento.

Utilizando a chave Key Protect

Depois de conceder às suas implementações do Cloud Databases permissão para usar suas chaves, você fornecerá o nome da chave ou o CRN ao provisionar uma implementação. A implementação usa sua chave de criptografia para criptografar seus dados.

Utilização da chave “ Key Protect ” na interface do usuário durante o provisionamento

Se estiver realizando o provisionamento a partir da página do catálogo, selecione a instância e a chave “ Key Protect ” no menu suspenso.

Utilização da chave Key Protect na CLI durante o provisionamento

Na CLI, use o parâmetro dataservices.encryption.disk no objeto JSON de parâmetros para atribuir um CRN de chave raiz à sua instância de serviço.

ibmcloud resource service-instance-create <INSTANCE-NAME> <SERVICE-NAME> <PLAN-NAME> REGION -p '{"dataservices":{"encryption":{"disk":"KMS_KEY_CRN"}}}'

A chave “ Key Protect ” precisa ser identificada pelo seu CRN completo, e não apenas pelo seu ID. Um CRN do Key Protect tem o formato crn:v1:<...>:key:<id>.

Utilização da chave “ Key Protect ” na API durante o provisionamento

Na API, utilize o parâmetro dataservices.encryption.disk no corpo da solicitação.

  curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H "Authorization: Bearer <IAM token>" -H 'Content-Type: application/json' -d '{
    "name": "<INSTANCE-NAME>",
    "target": "ca-mon",
    "resource_group": "<A RESOURCE GROUP GUID>",
    "resource_plan_id": "<A PLAN ID>",
    "parameters": {
      "dataservices": {
          "encryption": {
            "disk": "KMS_KEY_CRN"
          }
      }
    }

A chave “ Key Protect ” precisa ser identificada pelo seu CRN completo, e não apenas pelo seu ID. Um CRN do Key Protect tem o formato crn:v1:<...>:key:<id>.

Rotação de chaves

Key Protect oferece o recurso “ rotação de chave ” (Rede de Roteamento de Roteadores) nos modos manual e automático, e a rotação de chaves é compatível com implantações do tipo “ Cloud Databases ”. O processo de rotação de uma chave inicia uma tarefa de sincronização do estado do KMS e a implementação é recriptografada com a nova chave. A tarefa é exibida na página “Tarefas” da seção “Visão geral” da sua implantação, e os eventos associados “ Key Protect ” e “ Cloud Databases ” são enviados para Activity Tracker.

Para obter mais informações, consulte “Rotação manual ou automática ”.

Excluindo a implementação

Se você excluir uma implantação protegida por uma chave do serviço de gerenciamento de chaves ( Key Protect ), a implantação permanecerá registrada na chave durante o período de exclusão temporária (até 9 dias). Para excluir a chave durante o período de exclusão temporária, force a exclusão da chave. Após o período de exclusão recuperável, a chave poderá ser excluída sem a força. Para saber quando você pode excluir a chave, verifique a associação entre a chave e sua implantação.

Fragmentação de criptografia

A fragmentação de criptografia é uma ação destrutiva. Quando a chave é excluída, seus dados se tornam irrecuperáveis.

Key Protect permite que você inicie uma exclusão forçada de uma chave que esteja em uso pelos serviços d IBM Cloud®, incluindo suas implantações do Gen 2 Cloud Databases. Essa ação é chamada de fragmentação de criptografia. A exclusão de uma chave que está em uso em sua implementação bloqueia os discos que contêm seus dados e desativa sua implementação. Ainda é possível acessar a IU e alguns metadados, como configurações de segurança, na IU, na CLI e na API, mas não é possível acessar nenhum dos bancos de dados ou dados contidos dentro deles. A exclusão de chave é enviada para o Activity Tracker Event Routing como kms.secrets.delete.

Bring Your Own Key para backups

Se você usar o Key Protect, ao provisionar um banco de dados, também poderá designar uma chave para criptografar o disco IBM® Cloud Block Storage for Virtual Private Cloud que armazena os backups da sua implantação.

O backup herda a mesma chave de criptografia do banco de dados. Não é possível fornecer uma chave de criptografia diferente ao criar o backup a partir do banco de dados.

Concedendo a autorização de delegação

Para que sua implantação utilize a chave “ Key Protect ”, é necessário habilitar a delegação de autorização ao conceder as autorizações do serviço. Se a autorização de delegação não estiver presente antes de provisionar sua implementação com uma chave, a provisão falhará.

Após a ativação da delegação e o fornecimento da implementação, duas entradas são exibidas em Autorizações no IAM. Uma é a entrada para a implementação que lista seu status como delegador. Ele é "Criado pelo usuário".

Exemplo de autorização de delegador Key Protect
Função Origem Target Tipo
Delegador de autorização, Leitor <cloud-databases> Service Key Protect Serviço Definido pelo Usuário

E um para o volume “ Block Storage for VPC ” da instância de serviço e seus backups (se houver), em que a implantação é o iniciador.

Exemplo de autorização do Key Protect para Cloud Object Storage, extraído de Cloud Databases
Função Origem Target Tipo
Leitor Block Storage for VPC serviço Key Protect Serviço Criado por <cloud-databases-crn>

Removendo chaves

O IAM/ Key Protect não impede que você remova a política entre a chave e Block Storage for VPC (segundo exemplo), mas isso pode tornar seus tópicos/partições impossíveis de serem restaurados.

Armadilhas comuns

Tenha cuidado ao remover chaves e autorizações. Se você tiver várias implantações que utilizam as mesmas chaves, é possível destruir inadvertidamente os dados de todas essas implantações ao revogar a autorização de delegação. Se possível, não utilize a mesma chave para várias implantações.

Se você quiser destruir os dados associados à sua instância, pode excluir a chave. O recurso “ Block Storage for VPC ” garante que o armazenamento fique ilegível e não possa ser gravado. No entanto, quaisquer outras implantações (ou seus backups) que utilizem essa mesma chave enfrentarão falhas posteriormente.

Caso seja necessário que a mesma chave seja utilizada para várias implantações e/ou backups, a remoção de chaves e autorizações pode ter os seguintes efeitos colaterais. Se você excluir a autorização do volume “ Block Storage for VPC ” (conforme mostrado na Tabela 2), não apenas a implantação indicada como criadora será afetada, mas também todas as implantações que utilizam a mesma chave. Essas implantações apresentarão falhas até que você abra um ticket de suporte e solicite que a política seja recriada.

Tenha cuidado se você reutilizar chaves.