Neste documento, descrevemos como se autenticar no Google Cloud usando tokens, por meio da federação de identidade da carga de trabalho. Com a federação de identidade da carga de trabalho, é possível conceder às cargas de trabalho SAP locais ou em várias nuvens acesso aos recursos do Google Cloud sem usar uma chave de conta de serviço. É possível usar a federação de identidade com a Amazon Web Services (AWS) ou qualquer provedor de identidade (IdP) compatível com o OpenID Connect (OIDC), como o Microsoft Azure ou o SAML 2.0.
A federação de identidade da carga de trabalho segue a especificação de troca de token do OAuth 2.0. Você fornece uma credencial do IdP ao Serviço de token de segurança, que verifica a identidade na credencial e, em seguida, retorna um token de acesso em troca. É possível usar esse token para imitar uma conta de serviço e receber um token de acesso de curta duração. Com o token de acesso de curta duração, é possível chamar qualquer API do Google Cloud a que a conta de serviço tenha acesso.
Para autenticação com tokens usando a federação de identidade da carga de trabalho, as etapas gerais de configuração são as seguintes:
- Prepare seu IdP externo.
- No Google Cloud, configure a federação de identidade da carga de trabalho.
- No Google Cloud, crie uma conta de serviço.
- No Google Cloud, permita que a carga de trabalho externa represente a conta de serviço.
- No ABAP SDK for Google Cloud, implemente o código ABAP para recuperar tokens de segurança do seu IdP.
- No ABAP SDK for Google Cloud, configure a chave do cliente.
Nem todos os produtos do Google Cloud são compatíveis com a federação de identidade da carga de trabalho. Antes de configurar a autenticação usando a federação de identidade da carga de trabalho, consulte a lista de produtos compatíveis e limitações. Saiba mais em Federação de identidade de colaboradores: produtos e limitações com suporte.
Preparar seu IdP externo
Você precisa preparar seu IdP para que sua carga de trabalho SAP possa receber credenciais que possam ser trocadas por um token de segurança do Google OAuth 2.0.
Para preparar o IdP externo, siga as etapas dependendo do IdP:
- Se você estiver usando a AWS ou o Azure como IdP, siga as instruções para preparar seu IdP externo.
- Se você estiver usando outros IdPs, siga as instruções para preparar seu IdP externo.
Configurar a federação de identidade da carga de trabalho
No Google Cloud, configure os provedores e o pool de identidades de cargas de trabalho.
Você configura um pool de identidades, que é uma entidade que permite gerenciar identidades externas. Você também configura um provedor de pool de identidade da carga de trabalho, que é uma entidade que descreve uma relação entre o Google Cloud e seu IdP.
Para configurar a federação de identidade da carga de trabalho, execute as etapas, dependendo do IdP externo:
- Se você estiver usando a AWS ou o Azure como IdP, siga as instruções para criar o pool de identidades e o provedor de identidades de cargas de trabalho.
- Se você estiver usando outros IdPs, siga as instruções para criar o pool de identidade e o provedor da carga de trabalho.
Anote o seguinte:
- Número do projeto: o número do projeto do Google Cloud em que você criou o pool de Identidade da carga de trabalho.
- ID do pool: um ID exclusivo que identifica o pool de identidades da carga de trabalho.
- ID do provedor: um ID que identifica o provedor do pool de identidades da carga de trabalho.
Você precisa delas para a configuração da chave de cliente do SDK ABAP.
Crie uma conta de serviço
No console do Google Cloud, crie uma conta de serviço de IAM dedicada para acessar as APIs do Google Cloud. Essa conta de serviço precisa ser a principal no projeto do Google Cloud que contém as APIs do Google Cloud que você planeja consumir usando o SDK.
No console do Google Cloud, ative a API IAM Service Account Credentials, a API Security Token Service e todas as outras APIs compatíveis que você planeja acessar usando o SDK.
Para informações sobre como ativar as APIs do Google Cloud, consulte Como ativar APIs.
Crie uma conta de serviço que represente a carga de trabalho.
Conceda à conta de serviço os papéis do IAM necessários para acessar a funcionalidade da API. Para entender o requisito da função para APIs do Google Cloud, consulte a documentação da API individual e siga o princípio do menor privilégio. Para mais informações sobre papéis predefinidos específicos da API, consulte Encontrar papéis do IAM para APIs do Google Cloud.
Permitir que a carga de trabalho externa represente a conta de serviço
Para permitir que a carga de trabalho externa represente a conta de serviço, execute as etapas dependendo do IdP externo:
- Se você estiver usando a AWS ou o Azure como seu IdP, siga as instruções para permitir que a carga de trabalho externa represente a conta de serviço.
- Se você estiver usando outros IdPs, siga as instruções para permitir que a carga de trabalho externa represente a conta de serviço.
Implemente o código ABAP para recuperar tokens de segurança do seu IdP
O ABAP SDK for Google Cloud disponibiliza uma classe abstrata /GOOG/CL_AUTH_WIF_BASE
,
que tem a lógica para recuperar tokens de segurança OAuth 2.0 do
Security Token Service e tokens de acesso OAuth 2.0 da
API Service Account Credentials do IAM. Como desenvolvedor, você precisa criar uma classe filha no seu namespace que seja herdeira
da classe abstrata /GOOG/CL_AUTH_WIF_BASE
.
Para invocar as funções do Cloud Run do ABAP SDK for Google Cloud usando
a federação de identidade da carga de trabalho,
o SDK disponibiliza outra classe abstrata
/GOOG/CL_AUTH_WIF_ID_TOKEN
. Se você configurar a autenticação usando
a federação de identidade da carga de trabalho, precisará criar mais uma
classe filha no namespace herdada da classe abstrata
/GOOG/CL_AUTH_WIF_ID_TOKEN
. Essa classe filha é especificada no campo Classe de autorização ao configurar a chave do cliente para invocar as funções do Cloud Run.
Implemente o
método GET_EXT_IDP_TOKEN
na classe filha e escreva a lógica para receber o
token de segurança do IdP. Preencha os seguintes campos:
CV_TOKEN
: o token recuperado do IdP no formatostring
.CV_TOKEN_TYPE
: o tipo do token de segurança recuperado do IdP. Os tipos de token compatíveis são:urn:ietf:params:oauth:token-type:jwt
urn:ietf:params:oauth:token-type:id_token
urn:ietf:params:aws:token-type:aws4_request
urn:ietf:params:oauth:token-type:access_token
urn:ietf:params:oauth:token-type:saml2
Os valores preenchidos em CV_TOKEN
e CV_TOKEN_TYPE
são usados por métodos da
classe abstrata /GOOG/CL_AUTH_WIF_BASE
para trocar e recuperar o
token OAuth 2.0 final, que é usado nas chamadas de API.
O exemplo a seguir mostra as implementações de amostra do método
GET_EXT_IDP_TOKEN
para
outros provedores de nuvem, como AWS e Azure.
AWS
Azure
Configurar chave do cliente
-
Na GUI do SAP, execute o código de transação
/GOOG/SDK_IMG
.Como alternativa, execute o código da transação
SPRO
e clique em IMG de referência do SAP. - Clique em ABAP SDK for Google Cloud > Configurações básicas > Configurar chave do cliente.
- Clique em Novas entradas.
Insira valores nos campos a seguir:
Campo Descrição Nome da chave do Google Cloud Especifique um nome da configuração da chave do cliente. Nome da conta de serviço do Google Cloud Especifique o nome da conta de serviço, no formato de endereço de e-mail, que foi criada para acessar as APIs do Google Cloud na etapa Criar uma conta de serviço. Por exemplo, sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com
.Escopo do Google Cloud Deixe esse campo em branco. Identificador de projeto do Google Cloud Especifique o ID do projeto do Google Cloud em que você criou o pool de Identidade da carga de trabalho. Nome do comando Deixe esse campo em branco. Classe de autorização Especifique a classe filha, que contém a implementação da classe /GOOG/CL_AUTH_WIF_BASE
. Para mais informações, consulte Implementar o código ABAP para recuperar tokens de segurança do IdP.Armazenamento de tokens em cache Deixe esse campo em branco. Token de atualização em segundos Deixe esse campo em branco. Parâmetro de autorização 1 Especifique o ID do pool de identidades de cargas de trabalho. Parâmetro de autorização 2 Especifique o ID do provedor de identidade da carga de trabalho. Salve a entrada.
Receber suporte
Se você precisar de ajuda para resolver problemas com o ABAP SDK for Google Cloud, faça o seguinte:
Consulte o guia de solução de problemas do ABAP SDK for Google Cloud.
Faça suas perguntas e discuta o ABAP SDK for Google Cloud com a comunidade nos Fóruns do Cloud.
Colete todas as informações de diagnóstico disponíveis e entre em contato com o Cloud Customer Care. Para mais informações sobre como entrar em contato com o atendimento ao cliente, consulte Como receber suporte para o SAP no Google Cloud.