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
- Você instalou o ABAP SDK for Google Cloud no seu sistema. Consulte o codelab Instalar o teste do ABAP Platform 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 fazer a autenticação da 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 seu 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
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:
- 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 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.
8. Adicionar uma versão do secret
- 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" .
- Clique nos três pontos à direita e selecione Ver valor do secret. O secret armazenado será mostrado.
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:
- 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 | <<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
- Faça login no sistema SAP.
- Acesse o código da 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 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.
- Salve e ative o programa de denúncia.
- 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ê 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
- 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