Extrair credenciais/segredos do Secret Manager do Google Cloud com o ABAP SDK for Google Cloud

1. Introdução

Neste codelab, listamos as etapas para recuperar credenciais ou segredos da API Google Cloud Secret Manager usando o SDK ABAP para o Google Cloud.

Os seguintes serviços do Google Cloud são usados neste codelab:

  • Secret Manager
  • Cloud Shell

O que você vai criar

Você vai fazer o seguinte:

  • Ative a API Secret Manager em um projeto do Google Cloud.
  • criar um segredo;
  • Adicione uma versão do secret.
  • Acessar/extrair um segredo usando o ABAP SDK for Google Cloud.

Neste codelab, as etapas para criar um segredo e adicionar uma versão dele são feitas com comandos gcloud, mas também podem ser feitas usando a biblioteca de cliente do Secret Manager fornecida com o SDK ABAP para Google Cloud.

2. Requisitos

  • Um navegador, como o Chrome ou o Firefox
  • Um projeto do Google Cloud com o faturamento ativado ou Crie uma conta de teste sem custo financeiro de 90 dias para o Google Cloud Platform.
  • GUI do SAP (Windows ou Java) instalado no sistema. Se o SAP GUI já estiver instalado no seu laptop, conecte-se ao SAP usando o endereço IP externo da VM como o IP do servidor de aplicativos. Se você estiver usando um Mac, também poderá instalar o SAP GUI para Java disponível neste link.

3. Antes de começar

6757b2fb50ddcc2d.png

  • Execute os comandos a seguir para fazer a autenticação da sua conta e definir o projeto padrão como abap-sdk-poc. A zona us-west4-b é usada como exemplo. Se necessário, mude o projeto e a zona nos comandos a seguir de acordo com sua preferência.
gcloud auth login
gcloud config set project abap-sdk-poc
gcloud config set compute/zone us-west4-b

4. Visão geral

Confira uma visão geral rápida de algumas das entidades do Secret Manager com que você vai trabalhar neste codelab:

  • Secret: um secret é um objeto global do projeto que contém uma coleção de metadados e versões de secrets.
  • Versão do secret: uma versão do secret armazena os dados reais do secret, como chaves de API, senhas ou certificados.

5. Ativar o Secret Manager no seu projeto do Google Cloud

  1. Acesse seu projeto do Google Cloud e clique em Ativar o Cloud Shell no canto superior direito.

8d15f753321c53e6.png

  1. Execute o comando a seguir para ativar a API Cloud Secret Manager no seu projeto do Google Cloud.
gcloud services enable secretmanager.googleapis.com

A API Secret Manager deve estar ativada no seu projeto do Google Cloud.

6. Criar uma conta de serviço com funções de usuário do Secret Manager

Para criar uma conta de serviço com os papéis necessários, siga estas etapas:

  1. Execute o seguinte comando no terminal do Cloud Shell:
gcloud iam service-accounts create abap-sdk-secretmanager-tester \
--display-name="Service Account for Secret Manager"
  1. Adicione os papéis necessários à conta de serviço criada na etapa anterior para criar um secret, adicionar uma versão do secret e acessar uma versão do secret.
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.secrets.create'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.add'
gcloud endpoints services add-iam-policy-binding secretmanager.googleapis.com \ --member='serviceAccount:abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com' \
--role='roles/roles/secretmanager.versions.access'

Os comandos acima usam abap-sdk-poc como marcador de posição para o projeto do Google Cloud. Substitua abap-sdk-poc pelo ID do projeto.

  • Para verificar se o papel foi adicionado, acesse a página IAM. A conta de serviço que você criou vai aparecer com o papel atribuído a ela.

7. Criar um secret

  • No Cloud Shell, execute o comando abaixo para criar um segredo com o nome "demo-secret" para este codelab:
gcloud secrets create demo-secret \
    --replication-policy="automatic"

Você vai encontrar um segredo criado no seu projeto do Google Cloud, conforme mostrado abaixo.

99a318dbdd37af4e.png

8. Adicionar uma versão do secret

  1. No Cloud Shell, execute o comando a seguir para adicionar uma versão secreta ao secret "demo-secret".
echo -n "This is my super secret data" | \
    gcloud secrets versions add demo-secret --data-file=-

Uma versão do secret é criada. Para conferir os detalhes, clique em "demo-secret" .

bbf6b9f2f9c4340a.png

  1. Clique nos três pontos à direita e selecione Ver valor do secret. O secret armazenado será mostrado.

6f3afd0ac25445bf.png

9. Criar configurações do SDK no SAP

Agora que você configurou os pré-requisitos no Google Cloud, podemos prosseguir com a configuração no SAP. Para a configuração relacionada à autenticação e conectividade, o ABAP SDK for Google Cloud usa a tabela /GOOG/CLIENT_KEY.

Para manter a configuração na tabela /GOOG/CLIENT_KEY, siga estas etapas:

  1. Na GUI do SAP, insira o código da transação SPRO.
  2. Clique em IMG de referência SAP.
  3. Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar chave do cliente.
  4. Mantenha os seguintes valores nos campos:

Campo

Descrição

Nome da chave do Google Cloud

SECRET_MANAGER_DEMO

Nome da conta de serviço do Google Cloud

abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com

Escopo do Google Cloud

https://www.googleapis.com/auth/cloud-platform

Identificador de projeto do Google Cloud

<<Seu ID do projeto do Google Cloud>>

Classe de autorização

/GOOG/CL_AUTH_GOOGLE

Deixe os outros campos em branco.

10. Extrair o segredo usando o SDK

  1. Faça login no sistema SAP.
  2. Acesse o código da transação SE38 e crie um relatório com o nome "ZDEMO_ACCESS_SECRET".
  3. No pop-up que abrir, forneça os detalhes conforme mostrado abaixo e clique em Salvar.

b1ef7c7744ceb5ce.png

  1. No próximo pop-up, selecione Objeto local ou informe um nome de pacote, conforme apropriado.
  • No Editor ABAP, adicione o seguinte código:
* Data declarations
 DATA:
   lv_p_projects_id TYPE string,
   lv_p_secrets_id  TYPE string,
   lv_p_versions_id TYPE string.

 TRY.
* Open HTTP Connection
     DATA(lo_client) = NEW /goog/cl_secretmgr_v1( iv_key_name = 'SECRET_MANAGER_DEMO' ).

* Populate relevant parameters
 lv_p_projects_id = lo_client->gv_project_id.
 lv_p_secrets_id = 'demo-secret'.
 lv_p_versions_id = 'latest'.

* Call API method: secretmanager.projects.secrets.versions.access
     lo_client->access_versions(
       EXPORTING
         iv_p_projects_id = lv_p_projects_id
         iv_p_secrets_id  = lv_p_secrets_id
         iv_p_versions_id = lv_p_versions_id
       IMPORTING
         es_output        = DATA(ls_output)
         ev_ret_code      = DATA(lv_ret_code)
         ev_err_text      = DATA(lv_err_text)
         es_err_resp      = DATA(ls_err_resp) ).
     IF lo_client->is_success( lv_ret_code ).
      cl_http_utility=>if_http_utility~decode_base64(
        EXPORTING
          encoded = ls_output-payload-data
        RECEIVING
          decoded = DATA(lv_decoded_secret) ).
       DATA(lv_msg) = 'Secret data fetched successfully, Decoded Secret: ' && lv_decoded_secret.
      cl_demo_output=>display( lv_msg ).
     ELSE.
       lv_msg = lv_ret_code && ':' && lv_err_text.
       cl_demo_output=>display( lv_msg ).

     ENDIF.

* Close HTTP Connection
     lo_client->close( ).

   CATCH /goog/cx_sdk INTO DATA(lo_exception).
     MESSAGE lo_exception->get_text( ) TYPE 'E'.

 ENDTRY.
  1. Salve e ative o programa de denúncia.
  2. Execute o relatório (pressione F8).

Se a execução for bem-sucedida, você vai ver a saída do relatório, conforme mostrado abaixo:

24acec0fc2d4d18b.png

11. Parabéns

Parabéns! Você extraiu um segredo armazenado no Secret Manager do Google Cloud Platform usando o SDK ABAP para o Google Cloud.

O Google Cloud Secret Manager também tem outros recursos, como:

  • Como aplicar um patch a um secret
  • Como destruir uma versão do Secret
  • Como excluir um secret

É possível invocar esses recursos do Secret Manager pelo ABAP SDK for Google Cloud nos seus aplicativos SAP.

12. Limpar

Se você não quiser continuar com os outros codelabs relacionados ao SDK ABAP para Google Cloud, prossiga com a limpeza.

Excluir o projeto

  • Exclua o projeto do Google Cloud:
gcloud projects delete abap-sdk-poc

Excluir recursos individuais

  1. Exclua a instância de computação:
gcloud compute instances delete abap-trial-docker
  1. Exclua as regras de firewall:
gcloud compute firewall-rules delete sapmachine
  1. Exclua a conta de serviço:
gcloud iam service-accounts delete \
 abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com