1. Introdução
Neste codelab, listamos as etapas para recuperar credenciais ou secrets da API Google Cloud Secret Manager usando o ABAP SDK for 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/recuperar um secret usando o ABAP SDK for Google Cloud.
Neste codelab, as etapas para criar um secret e adicionar uma versão dele seriam feitas com comandos gcloud, mas também podem ser realizadas 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.
- A GUI do SAP (Windows ou Java) instalada no seu sistema. Se a GUI do SAP já estiver instalada no seu notebook, 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 a GUI do SAP para Java disponível neste link.
3. Antes de começar
- O ABAP SDK for Google Cloud está instalado no seu sistema. Consulte o codelab Instalar a versão de teste da plataforma ABAP 1909 no Google Cloud Platform e instalar o SDK ABAP para configurar um novo sistema.
- Você vai usar o Cloud Shell, um ambiente de linha de comando executado no Google Cloud.
- No console do Cloud, clique em "Ativar o Cloud Shell" no canto superior direito:
- Execute os comandos a seguir para autenticar sua conta e definir o projeto padrão como
abap-sdk-poc
. A zonaus-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 projeto do Google Cloud
- Acesse seu projeto do Google Cloud e clique em Ativar o Cloud Shell no canto superior direito.
- Execute o comando a seguir para ativar a API Cloud Secret Manager no seu projeto do Google Cloud.
gcloud services enable secretmanager.googleapis.com
Agora a API Secret Manager está ativada no seu projeto do Google Cloud.
6. Criar uma conta de serviço com papéis de usuário do Secret Manager
Para criar uma conta de serviço com os papéis necessários, siga estas etapas:
- 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"
- Adicione os papéis necessários à conta de serviço criada na etapa anterior para criar, adicionar 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 a função foi adicionada, acesse a página IAM. A conta de serviço criada vai aparecer com a função atribuída a ela.
7. Criar um secret
- No Cloud Shell, execute o comando a seguir para criar uma chave secreta com o nome "demo-secret" para este codelab:
gcloud secrets create demo-secret \
--replication-policy="automatic"
Você vai conseguir ver um secret criado no seu projeto do Google Cloud, conforme mostrado abaixo.
8. Adicionar uma versão do secret
- No Cloud Shell, execute o comando a seguir para adicionar uma versão da chave secreta "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 ver os detalhes, clique em "demo-secret" .
- Clique nos três pontos à direita e selecione Ver valor do secret. O secret armazenado vai aparecer.
9. Criar configurações do SDK no SAP
Agora que você configurou os pré-requisitos no Google Cloud, podemos continuar 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:
- Na GUI do SAP, insira o código da transação SPRO.
- Clique em IMG de referência SAP.
- Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar chave do cliente.
- 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 | <<ID do seu projeto do Google Cloud>> |
Classe de autorização | /GOOG/CL_AUTH_GOOGLE |
Deixe os outros campos em branco.
10. Recuperar o secret usando o SDK
- Faça login no sistema SAP.
- Acesse o código de transação SE38 e crie um relatório com o nome "ZDEMO_ACCESS_SECRET".
- No pop-up que abrir, forneça os detalhes conforme mostrado abaixo e clique em Salvar.
- No próximo pop-up, selecione Objeto local ou forneça 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.
- Salve e ative o programa de relatórios.
- 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:
11. Parabéns
Parabéns! Você recuperou um secret armazenado no Secret Manager do Google Cloud Platform usando o ABAP SDK for Google Cloud.
O Google Cloud Secret Manager também tem outros recursos, como:
- Como fazer patch em um secret
- Como destruir uma versão do secret
- Como excluir um secret
É possível invocar esses recursos do Secret Manager usando o ABAP SDK for Google Cloud nos seus aplicativos SAP.
12. Limpar
Se você não quiser continuar com os outros codelabs relacionados ao ABAP SDK for Google Cloud, faça a limpeza.
Excluir o projeto
- Exclua o projeto do Google Cloud:
gcloud projects delete abap-sdk-poc
Excluir recursos individuais
- Exclua a instância de computação:
gcloud compute instances delete abap-trial-docker
- Exclua as regras de firewall:
gcloud compute firewall-rules delete sapmachine
- Exclua a conta de serviço:
gcloud iam service-accounts delete \
abap-sdk-secretmanager-tester@abap-sdk-poc.iam.gserviceaccount.com