Menyiapkan autentikasi untuk ABAP SDK edisi lokal atau cloud apa pun untuk Google Cloud

Dokumen ini menjelaskan cara melakukan autentikasi ke Google Cloud dari ABAP SDK edisi cloud lokal atau edisi cloud apa pun untuk Google Cloud.

Aplikasi yang dikembangkan menggunakan ABAP SDK untuk Google Cloud memerlukan autentikasi agar dapat terhubung ke Google Cloud API. SDK ini memungkinkan penggunaan praktik terbaik yang direkomendasikan Google Cloud untuk autentikasi.

Untuk autentikasi dan otorisasi agar dapat mengakses Google Cloud API, SDK terutama menggunakan token. Selain itu, SDK juga mendukung kunci API untuk melakukan autentikasi ke Google Cloud API yang menggunakan kunci API.

Bergantung pada Google Cloud API yang perlu Anda akses, lingkungan tempat sistem SAP Anda dihosting, dan persyaratan keamanan sistem SAP, Anda dapat memilih jenis autentikasi yang sesuai. Tabel berikut meringkas jenis autentikasi yang didukung berdasarkan lokasi hosting sistem SAP Anda:

Lokasi sistem SAP Authentication type Petunjuk
SAP RISE, di mana pun server tersebut ditempatkan Token Web JSON (JWT) Melakukan autentikasi menggunakan JSON Web Token (JWT)
Sistem SAP yang dihosting di VM Compute Engine Token akses Mengautentikasi menggunakan token akses
Sistem SAP yang dihosting di luar Google Cloud Token Web JSON (JWT) Melakukan autentikasi menggunakan JSON Web Token (JWT)
Token akses Mengautentikasi menggunakan token melalui Workload Identity Federation

Autentikasi ke Google Cloud API menggunakan kunci API

Hanya beberapa Google Cloud API yang menggunakan kunci API untuk autentikasi, misalnya, Google Maps Platform. Tinjau dokumentasi autentikasi untuk layanan atau API yang ingin Anda gunakan untuk mengetahui apakah layanan atau API tersebut mendukung kunci API atau tidak. Di mana pun sistem SAP Anda dihosting, Anda dapat menggunakan kunci API untuk autentikasi selama API yang ingin Anda gunakan mendukung kunci API.

Untuk melakukan autentikasi ke Google Cloud API menggunakan kunci API, gunakan salah satu metode berikut:

Autentikasi ke Google Workspace API menggunakan kredensial klien OAuth 2.0

Untuk mengakses Google Workspace API, Anda dapat menggunakan kredensial klien OAuth 2.0. Kredensial klien OAuth 2.0 memungkinkan Anda mengambil token dalam konteks pengguna akhir, seperti token yang diperlukan untuk mengakses Google Spreadsheet. Di mana pun sistem SAP dihosting, Anda dapat menggunakan kredensial klien OAuth 2.0 untuk autentikasi ke Google Workspace API selama sistem tersebut mendukung OAuth 2.0.

Untuk mengetahui informasi tentang cara menyiapkan autentikasi ke Google Workspace API, lihat Mengautentikasi ke Google Workspace API menggunakan kredensial klien OAuth 2.0.

Mengautentikasi menggunakan token akses

Bagian ini menunjukkan cara menyiapkan autentikasi untuk mengakses Google Cloud API dengan menggunakan token ketika sistem SAP Anda dihosting di instance VM Compute Engine.

  1. Di Konsol Google Cloud, aktifkan IAM Service Account Credentials API untuk project Google Cloud yang memerlukan autentikasi. Bersama dengan IAM Service Account Credentials API, Anda harus mengaktifkan API lain yang didukung yang ingin Anda akses menggunakan SDK.

    Buka library API

    Untuk mengetahui informasi tentang cara mengaktifkan Google Cloud API, lihat Mengaktifkan API.

  2. Di Konsol Google Cloud, buat akun layanan IAM untuk instance VM host.

    Buka halaman Service accounts

    Untuk mengetahui informasi tentang cara membuat akun layanan, lihat Membuat akun layanan.

  3. Berikan peran Service Account Token Creator ke akun layanan. Untuk mengetahui petunjuknya, lihat Memberikan satu peran.

  4. Tambahkan akun layanan ke instance VM tempat workload SAP Anda dijalankan. Selain itu, tetapkan cakupan akses VM ke cloud-platform.

    • Jika Anda menentukan akun layanan menggunakan Konsol Google Cloud, cakupan akses VM akan otomatis ditetapkan secara default ke cakupan cloud-platform.
    • Jika menentukan akun layanan menggunakan Google Cloud CLI atau Compute Engine API, Anda perlu menetapkan cakupan akses API ke Allow full access to all Cloud APIs.

      Untuk mengetahui petunjuknya, lihat Membuat VM dan memasang akun layanan.

      Setelah memperbarui cakupan, mulai ulang VM. Jika Anda memiliki beberapa instance VM untuk penginstalan SAP yang sama, Anda harus menyelesaikan langkah ini pada semua instance VM tersebut.

  5. Di konsol Google Cloud, buat akun layanan IAM khusus untuk mengakses Google Cloud API.

    Buka halaman Service accounts

    Untuk mengetahui petunjuknya, lihat Membuat akun layanan.

  6. Memberi akun layanan peran IAM yang diperlukan untuk mengakses fungsi API. Guna memahami persyaratan peran untuk Google Cloud API, lihat dokumentasi API individual dan ikuti prinsip hak istimewa terendah. Untuk mengetahui informasi selengkapnya tentang peran bawaan khusus API, lihat Referensi peran dasar dan bawaan IAM.

  7. Jika Anda membuat akun layanan dalam project yang berbeda dengan project yang berisi Google Cloud API, Anda harus melakukan langkah-langkah tambahan untuk membuat akun layanan. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan akun layanan di lingkungan lintas project.

  8. Dalam sistem SAP, konfigurasi kunci klien:

    1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

      Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

    2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.

    3. Klik New Entries.

    4. Masukkan nilai untuk kolom berikut:

      Kolom Deskripsi
      Nama Kunci Google Cloud Tetapkan nama konfigurasi kunci klien. Misalnya, TEST_PUBSUB.
      Nama Akun Layanan Google Cloud

      Tentukan nama akun layanan yang telah Anda beri izin untuk mengakses Google Cloud API. Contoh, sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com.

      Jika VM host sistem SAP Anda yang berisi SDK berada di project yang berbeda dengan VM yang mengaktifkan Google Cloud API, tentukan akun layanan yang digunakan untuk mengakses Google Cloud API. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan akun layanan di lingkungan lintas project.

      Cakupan Google Cloud Tentukan cakupan akses API, https://www.googleapis.com/auth/cloud-platform.
      ID Project Google Cloud Tentukan ID project Google Cloud yang berisi API target Anda.
      Nama perintah Kosongkan kolom ini.
      Class Otorisasi Tentukan class otorisasi, /GOOG/CL_AUTH_GOOGLE.
      Pembuatan Cache Token

      Tanda yang menentukan apakah token akses yang diambil dari Google Cloud disimpan ke cache atau tidak.

      Sebaiknya aktifkan penyimpanan token ke dalam cache setelah Anda selesai mengonfigurasi dan menguji koneksi Anda ke Google Cloud. Untuk mengetahui informasi selengkapnya tentang penyimpanan token ke dalam cache, lihat Mengaktifkan penyimpanan token ke dalam cache.

      detik Refresh Token Jumlah waktu, dalam detik, sebelum masa berlaku token akses berakhir dan harus dimuat ulang. Nilai defaultnya adalah 3500.
      Parameter Otorisasi 1 Kosongkan kolom ini.
      Parameter Otorisasi 2 Kosongkan kolom ini.
    5. Simpan entri baru.

  9. Dalam sistem SAP, buat tujuan RFC baru untuk API yang akan digunakan dengan ABAP SDK untuk Google Cloud.

    Untuk informasi tentang cara membuat tujuan RFC, lihat Tujuan RFC.

  10. Dalam sistem SAP, konfigurasikan tabel pemetaan layanan untuk IAM API, dan API lain yang akan Anda gunakan dengan menggunakan ABAP SDK untuk Google Cloud.

    1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

      Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

    2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Service Mapping.

    3. Klik New Entries.

    4. Tentukan tujuan RFC untuk IAM API dan API lainnya, misalnya, Pub/Sub API v1.

      Nama Nama Layanan RFC Destination
      Nama Kunci Google Cloud iamcredentials.googleapis.com ZGOOG_IAMCREDENTIALS
      Nama Kunci Google Cloud pubsub:v1 ZGOOG_PUBSUB_V1
    5. Simpan entri baru.

  11. Dalam sistem SAP, validasi konfigurasi autentikasi. Untuk mengetahui informasi selengkapnya, lihat Memvalidasi konfigurasi autentikasi.

Menyiapkan akun layanan di lingkungan lintas project

VM host sistem SAP Anda, yang berisi SDK, dapat berada di project Google Cloud yang berbeda dari yang mengaktifkan Google Cloud API. Dalam hal ini, Anda harus menyiapkan akun layanan dengan peran IAM yang diperlukan sehingga SDK dapat mengakses API dari project lain.

Tabel berikut menunjukkan contoh penyiapan akun layanan untuk akses API lintas project.

Lingkungan VM host SAP Google Cloud API
Project Google Cloud project-sap-host project-google-apis
Akun layanan yang ditetapkan ke VM host SAP sa-sap-host@project-sap-host.iam.gserviceaccount.com T/A
Akun layanan untuk mengakses Google Cloud API sa-google-apis@project-sap-host.iam.gserviceaccount.com T/A
Peran IAM untuk akun layanan Pada project project-sap-host, berikan peran sa-sap-host@project-sap-host.iam.gserviceaccount.com Service Account Token Creator untuk akun layanan. Pada project project-google-apis, tambahkan akun layanan sa-google-apis@project-sap-host.iam.gserviceaccount.com sebagai prinsip dan berikan peran yang sesuai ke akun layanan untuk terhubung ke Google Cloud API.

Untuk menyiapkan akun layanan, lakukan langkah-langkah berikut:

  1. Dalam project Google Cloud yang berisi VM host SAP Anda, berikan peran Service Account Token Creator ke akun layanan VM host SAP. Untuk mengetahui informasi selengkapnya tentang langkah-langkahnya, lihat Memberikan satu peran.
  2. Dalam project Google Cloud yang berisi VM host SAP Anda, buat akun layanan. Catat nama akun layanan. Anda menentukan nama ini saat menambahkan akun layanan sebagai prinsip ke project lain yang berisi Google Cloud API.
  3. Dalam project lain yang berisi Google Cloud API, tambahkan akun layanan sebagai prinsip dan berikan peran yang sesuai untuk terhubung ke Google Cloud API. Untuk menambahkan akun layanan ke project Google Cloud yang berisi Google Cloud API, lakukan langkah-langkah berikut:

    1. Di Konsol Google Cloud, buka halaman Izin IAM:

      Buka halaman IAM permissions

    2. Pastikan nama project yang berisi Google Cloud API target ditampilkan di dekat bagian atas halaman. Contoh:

      Izin untuk project "PROJECT_NAME"

      Jika tidak, ganti project.

    3. Di halaman IAM, klik Berikan akses. Dialog Berikan akses ke "PROJECT_NAME" akan terbuka.

    4. Di kolom New principals, tentukan nama akun layanan.

    5. Di kolom Pilih peran, tentukan peran yang relevan. Misalnya, untuk Pub/Sub, jika ingin mengubah topik dan langganan, serta akses untuk memublikasikan dan menggunakan pesan, Anda dapat menentukan peran Pub/Sub Editor (roles/pubsub.editor).

      Untuk mengetahui informasi selengkapnya tentang peran bawaan khusus API, lihat Referensi peran dasar dan bawaan IAM.

    6. Tambahkan peran lain sesuai kebutuhan untuk penggunaan API Anda. Terapkan praktik terbaik yang direkomendasikan Google dengan menerapkan prinsip hak istimewa terendah.

    7. Klik Save. Akun layanan akan muncul dalam daftar akun utama project di halaman IAM.

Melakukan autentikasi menggunakan JSON Web Token (JWT)

Bagian ini menunjukkan cara menyiapkan autentikasi untuk mengakses Google Cloud API menggunakan token saat sistem SAP Anda berjalan di host yang ada di infrastruktur lokal, di penyedia cloud lain, di lingkungan lain di luar Google Cloud, atau dikelola oleh SAP melalui program SAP RISE.

Untuk autentikasi ke Google Cloud, Anda menggunakan Token Web JSON (JWT) yang ditandatangani Google Cloud untuk mendapatkan token akses dari Google Cloud.

Langkah-langkah konfigurasi tingkat tinggi adalah sebagai berikut:

Membuat akun layanan untuk pengambilan token berbasis JWT

Untuk autentikasi berbasis JWT ke Google Cloud, ABAP SDK untuk Google Cloud memerlukan akun layanan IAM.

Membuat akun layanan

Di Konsol Google Cloud, buat akun layanan IAM untuk pengambilan token berbasis JWT, dan berikan Service Account Token Creator untuk akun layanan.

Buka halaman Service accounts

Untuk mengetahui informasi tentang cara membuat akun layanan, lihat Membuat akun layanan.

Membuat kunci akun layanan

Anda harus membuat kunci akun layanan P12 untuk akun layanan yang digunakan untuk pengambilan token berbasis JWT.

Untuk membuat kunci akun layanan, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Service accounts IAM & Admin.

    Buka halaman Service accounts

  2. Pilih project Google Cloud Anda.

  3. Klik alamat email akun layanan yang Anda buat untuk pengambilan token berbasis JWT di bagian sebelumnya, Membuat akun layanan.

  4. Di bawah nama akun layanan, klik tab Keys.

  5. Klik menu drop-down Add Key, lalu pilih Create new key untuk membuat kunci akun layanan.

  6. Terima P12 sebagai jenis kunci dan klik Create.

    Kunci pribadi didownload ke komputer Anda.

  7. Catat sandi untuk file kunci pribadi, notasecret.

    Berikan kunci pribadi dan sandi kepada administrator SAP Anda untuk mengimpor kunci pribadi ke STRUST, seperti yang dijelaskan dalam Mengimpor kunci akun layanan ke STRUST.

Tentukan akun layanan untuk penandatanganan JWT

Jika Anda membuat akun layanan untuk login JWT di project yang berbeda dengan project yang berisi Google Cloud API, Anda perlu menentukan akun layanan di sistem host SAP.

Jika membuat akun layanan dalam project yang sama yang berisi Google Cloud API, maka Anda dapat melewati langkah ini.

Untuk menentukan akun layanan untuk penandatanganan JWT, lakukan langkah-langkah berikut:

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Parameters.

  3. Klik New Entries.

  4. Di kolom Parameter Name, masukkan JWT_SERVC_ACCT. Deskripsi parameter diisi secara otomatis.

  5. Di kolom Nilai Parameter, masukkan nama akun layanan.

  6. Simpan entri baru.

Mengonfigurasi setelan keamanan untuk Google Cloud di sistem host SAP

Jika ingin mengaktifkan penandatanganan JWT untuk akun layanan yang dibuat untuk pengambilan token berbasis JWT, Anda harus mengonfigurasi setelan keamanan untuk Google Cloud pada sistem host SAP.

Membuat Aplikasi Secure Store and Forward (SSF) baru

Setiap entri SSFAPPLIC memungkinkan Anda menyimpan satu kunci akun layanan. Agar dapat menyimpan kunci akun layanan untuk beberapa project, Anda harus membuat beberapa entri SSFAPPLIC dengan mengikuti langkah yang sama.

Untuk membuat entri baru dalam tabel SSFAPPLIC, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi SE16.
  2. Di kolom Table Name, masukkan SSFAPPLIC, dan buat entri baru.
  3. Di kolom APPLIC, masukkan nama untuk aplikasi SSF Anda, seperti ZG_JWT.
  4. Kecuali kolom B_INCCERTS, B_DETACHED, B_ASKPWD, dan B_DISTRIB, pilih semua kolom lainnya.
  5. Di kolom DESCRIPT, masukkan JWT Signature for GCP.
  6. Simpan entri baru.

    Entri ini menjadi node baru dalam transaksi STRUST, tempat Anda mengimpor kunci akun layanan.

Aktifkan node STRUST

Gunakan transaksi SSFA untuk mengaktifkan node STRUST untuk JWT Signature for GCP.

Untuk mengaktifkan node STRUST, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi SSFA.
  2. Klik New Entries.
  3. Di menu drop-down SSF Application, pilih JWT Signature for GCP. Ini adalah entri baru yang Anda buat di tabel SSFAPPLIC.

    Parameter SSF khusus aplikasi diisi secara otomatis.

  4. Simpan entri baru.

    Node baru SSF JWT Signature for GCP diaktifkan dalam transaksi STRUST.

Impor kunci akun layanan ke STRUST

Untuk mengimpor kunci akun layanan ke STRUST, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi STRUST.

    Verifikasi node baru dalam transaksi STRUST adalah SSF JWT Signature for GCP.

  2. Impor file kunci pribadi:

    1. Pilih PSE > Import dari panel menu.
    2. Bergantung pada sistem SAP Anda, pilih kunci pribadi yang sesuai:
      • SAP S/4HANA
        1. Pilih kunci pribadi P12.
        2. Masukkan sandi file notasecret, lalu klik OK.
      • SAP ECC
        1. Pilih kunci pribadi PSE. Anda harus mengonversi kunci pribadi P12 yang telah Anda download sebelumnya menjadi kunci pribadi PSE. Untuk mengetahui informasi selengkapnya tentang cara mengonversi kunci P12 menjadi kunci PSE, lihat Mengonversi kunci P12 menjadi kunci PSE.
        2. Masukkan PIN file yang Anda buat selama konversi kunci pribadi dari kunci P12 ke kunci PSE, lalu klik OK.
  3. Pilih PSE > Save as.

  4. Pilih Aplikasi SSF, dan di kolom input yang sesuai, pilih node Aplikasi SSF baru yang Anda buat di Create a new Secure Store and Forward (SSF) Application.

  5. Simpan entri baru.

    Kunci layanan dilampirkan ke SSF JWT Signature for GCP node aplikasi SSF.

Mengonversi kunci pribadi P12 menjadi kunci PSE

Jika sistem SAP Anda adalah SAP NetWeaver 7.0x (SAP ECC), maka Anda harus mengonversi kunci P12 menjadi kunci PSE.

Untuk mengonversi kunci P12 menjadi kunci PSE, lakukan langkah-langkah berikut:

  1. Buka jalur:

    /usr/sap/SID/SYS/exe/run/

    Ganti SID dengan ID sistem SAP.

  2. Jalankan perintah berikut setelah mengganti placeholder:

    sapgenpse import_p12 -p PSE_PATH_AND_FILE_NAME P12_PATH_AND_FILE_NAME.p12

    Ganti kode berikut:

    • PSE_PATH_AND_FILE_NAME: menentukan jalur dan nama file untuk file PSE
    • P12_PATH_AND_FILE_NAME: menentukan jalur dan nama file untuk file kunci P12
  3. Masukkan sandi file kunci pribadi P12, notasecret.

  4. Buat PIN baru untuk kunci pribadi PSE dan masukkan kembali PIN Anda.

  5. Catat PIN ini, Anda harus memberikan PIN ini saat mengimpor file kunci pribadi PSE ke STRUST.

Untuk informasi dari SAP tentang cara mengonversi kunci P12 menjadi kunci PSE, lihat:

Mengaktifkan Google Cloud API

Di Konsol Google Cloud, aktifkan IAM Service Account Credentials API untuk project Google Cloud yang memerlukan autentikasi. Bersama dengan IAM Service Account Credentials API, Anda harus mengaktifkan API lain yang didukung yang ingin Anda akses menggunakan SDK.

Buka library API

Untuk mengetahui informasi tentang cara mengaktifkan Google Cloud API, lihat Mengaktifkan API.

Membuat akun layanan untuk otorisasi agar dapat mengakses Google Cloud API

Untuk autentikasi dan otorisasi agar dapat mengakses Google Cloud API, ABAP SDK untuk Google Cloud memerlukan akun layanan IAM.

Membuat akun layanan

Di konsol Google Cloud, buat akun layanan IAM. Akun layanan ini harus merupakan akun utama dalam project Google Cloud yang berisi Google Cloud API yang akan Anda gunakan dengan menggunakan SDK. Jika membuat akun layanan di project yang sama yang berisi Google Cloud API, maka akun layanan akan ditambahkan sebagai akun utama ke project secara otomatis.

Jika Anda membuat akun layanan di project selain project tempat Google Cloud API diaktifkan, Anda harus menambahkan akun layanan ke project tersebut pada langkah tambahan.

  1. Di Konsol Google Cloud, buat akun layanan IAM untuk autentikasi dan otorisasi untuk mengakses Google Cloud API.

    Buka halaman Service accounts

    Untuk mengetahui informasi tentang cara membuat akun layanan, lihat Membuat akun layanan.

  2. Di konsol Google Cloud, berikan peran IAM yang diperlukan kepada akun layanan untuk mengakses fungsi API. Guna memahami persyaratan peran untuk Google Cloud API, lihat dokumentasi API individual dan ikuti prinsip hak istimewa terendah. Untuk mengetahui informasi selengkapnya tentang peran bawaan khusus API, lihat Referensi peran dasar dan bawaan IAM.

  3. Jika membuat akun layanan dalam project selain project yang berisi Google Cloud API yang akan digunakan dengan menggunakan SDK, catat nama akun layanan tersebut. Anda dapat menentukan nama project saat menambahkan akun layanan ke project tersebut. Untuk informasi selengkapnya, lihat Menambahkan akun layanan ke project Google Cloud.

Menambahkan akun layanan ke project Google Cloud

Jika Anda membuat akun layanan untuk ABAP SDK untuk Google Cloud dalam project selain project yang berisi Google Cloud API yang ingin Anda gunakan dengan SDK, maka Anda perlu menambahkan layanan tersebut akun ke project Google Cloud yang berisi Google Cloud API.

Jika membuat akun layanan dalam project yang sama yang berisi Google Cloud API, maka Anda dapat melewati langkah ini.

Untuk menambahkan akun layanan yang ada ke project Google Cloud yang berisi Google Cloud API, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman IAM Permissions:

    Buka halaman IAM permissions

  2. Pastikan nama project yang berisi Google Cloud API target ditampilkan di dekat bagian atas halaman. Contoh:

    Izin untuk project "PROJECT_NAME"

    Jika tidak, ganti project.

  3. Di halaman IAM, klik Berikan akses. Dialog Berikan akses ke "PROJECT_NAME" akan terbuka.

  4. Di dialog Berikan akses ke "PROJECT_NAME", lakukan langkah-langkah berikut:

    1. Di kolom New principals, tentukan nama akun layanan.
    2. Di kolom Pilih peran, tentukan peran yang relevan. Misalnya, untuk Pub/Sub, jika ingin mengubah topik dan langganan, serta akses untuk memublikasikan dan menggunakan pesan, Anda dapat menentukan peran Pub/Sub Editor (roles/pubsub.editor).

      Untuk mengetahui detail selengkapnya tentang peran bawaan khusus API, lihat Referensi peran dasar dan bawaan IAM.

    3. Tambahkan peran lain sesuai kebutuhan untuk penggunaan API Anda. Terapkan praktik terbaik yang direkomendasikan Google dengan menerapkan prinsip hak istimewa terendah.

    4. Klik Save. Akun layanan akan muncul dalam daftar akun utama project di halaman IAM.

Akun layanan sekarang dapat digunakan untuk mengakses Google Cloud API dalam project ini.

Menyiapkan koneksi HTTPS

Server aplikasi SAP diperlukan untuk terhubung ke Google Cloud API melalui HTTPS.

Di host SAP, pastikan aturan atau proxy firewall dikonfigurasi untuk mengizinkan traffic keluar dari port HTTPS ke Google Cloud API yang diperlukan.

Secara khusus, sistem SAP Anda harus dapat mengakses endpoint API berikut:

  • https://iamcredentials.googleapis.com
  • Endpoint API untuk API yang ingin Anda gunakan dengan SDK.

Membuat konfigurasi SAP

Untuk autentikasi berbasis JWT, buat konfigurasi SAP yang diperlukan.

Menentukan setelan akses di tabel kunci klien

Untuk menentukan setelan akses, lakukan langkah-langkah berikut:

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.

  3. Klik New Entries.

  4. Masukkan nilai untuk kolom berikut:

    Kolom Deskripsi
    Nama Kunci Google Cloud Tetapkan nama konfigurasi kunci klien.
    Nama Akun Layanan Google Cloud

    Tentukan nama akun layanan dalam format alamat email yang dibuat untuk ABAP SDK untuk Google Cloud di langkah Create a service account. Contoh: sap-example-svc-acct@example-project-123456.iam.gserviceaccount.com

    Cakupan Google Cloud Tentukan cakupan akses, https://www.googleapis.com/auth/cloud-platform.
    ID Project Tentukan ID project Google Cloud yang berisi API target Anda.
    Nama perintah Kosongkan kolom ini.
    Class Otorisasi Tentukan class otorisasi, /GOOG/CL_AUTH_JWT.
    Kolom Otorisasi Kosongkan kolom ini.
    detik Refresh Token Kosongkan kolom ini.
    Parameter Otorisasi 1 Tentukan nama aplikasi SSF yang Anda buat di bagian Create a new Secure Store and Forward (SSF) Application.
  5. Simpan entri baru.

Membuat tujuan RFC baru

Buat tujuan RFC untuk IAM API dan API lain yang ingin Anda gunakan menggunakan ABAP SDK untuk Google Cloud, misalnya, Pub/Sub API v1.

Nama tujuan RFC Notes
ZGOOG_IAMCREDENTIALS Tujuan RFC ini menargetkan IAM API .
ZGOOG_OAUTH2_TOKEN Tujuan RFC ini menargetkan endpoint Google Cloud untuk autentikasi berbasis token.
ZGOOG_PUBSUB_V1 Tujuan RFC ini menargetkan Pub/Sub API.

Untuk informasi tentang cara membuat tujuan RFC, lihat Tujuan RFC.

Menentukan tujuan RFC dalam tabel pemetaan layanan

Di tabel pemetaan layanan, tentukan tujuan RFC untuk IAM API dan API lain yang ingin Anda gunakan menggunakan ABAP SDK untuk Google Cloud.

Untuk menentukan tujuan RFC, lakukan langkah-langkah berikut:

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Service Mapping.

  3. Klik New Entries.

  4. Menentukan tujuan RFC untuk IAM API dan API lainnya. Contoh:

    Nama Nama Layanan RFC Destination
    Nama Kunci Google Cloud iamcredentials:v1 ZGOOG_IAMCREDENTIALS
    Nama Kunci Google Cloud googleapis.com/oauth2 ZGOOG_OAUTH2_TOKEN
    Nama Kunci Google Cloud pubsub.googleapis.com ZGOOG_PUBSUB_V1
  5. Simpan entri baru.

Mengautentikasi menggunakan token melalui Workload Identity Federation

Dengan Workload Identity Federation, Anda dapat memberikan akses workload SAP lokal atau multicloud ke resource Google Cloud tanpa menggunakan kunci akun layanan. Anda dapat menggunakan Workload Identity Federation dengan Amazon Web Services (AWS) atau dengan Penyedia Identitas (IdP) apa pun yang mendukung OpenID Connect (OIDC), seperti Microsoft Azure atau SAML 2.0.

Workload Identity Federation mengikuti spesifikasi pertukaran token OAuth 2.0. Anda memberikan kredensial dari IdP ke Layanan Token Keamanan, yang memverifikasi identitas pada kredensial, lalu menampilkan token federasi sebagai gantinya. Anda dapat menggunakan token ini untuk meniru identitas akun layanan dan mendapatkan token akses OAuth 2.0 yang berumur pendek. Dengan token akses jangka pendek, Anda dapat memanggil Google Cloud API apa pun yang dapat diakses oleh akun layanan.

Untuk autentikasi menggunakan token melalui Workload Identity Federation, langkah-langkah konfigurasi tingkat tinggi adalah sebagai berikut:

  1. Siapkan IdP eksternal.
  2. Di Google Cloud, konfigurasikan Workload Identity Federation.
  3. Di Google Cloud, buat akun layanan.
  4. Di Google Cloud, izinkan beban kerja eksternal meniru identitas akun layanan.
  5. Di ABAP SDK untuk Google Cloud, terapkan kode ABAP untuk mengambil token keamanan dari IdP Anda.
  6. Di ABAP SDK untuk Google Cloud, konfigurasikan kunci klien.

Tidak semua produk Google Cloud mendukung Workload Identity Federation. Sebelum menyiapkan autentikasi menggunakan Workload Identity Federation, tinjau daftar produk dan batasan yang didukung. Untuk mengetahui informasi selengkapnya, lihat Penggabungan identitas tenaga kerja: produk dan batasan yang didukung.

Menyiapkan IdP eksternal Anda

Anda harus menyiapkan IdP agar beban kerja SAP dapat memperoleh kredensial yang dapat ditukar dengan token keamanan Google OAuth 2.0.

Untuk menyiapkan IdP eksternal, lakukan langkah-langkah bergantung pada IdP Anda:

Mengonfigurasi Workload Identity Federation

Di Google Cloud, konfigurasikan penyedia dan kumpulan workload identity.

Anda akan mengonfigurasi kumpulan identitas, yaitu entity yang memungkinkan Anda mengelola identitas eksternal. Anda juga akan mengonfigurasi penyedia kumpulan identitas workload, yang merupakan entity yang menjelaskan hubungan antara Google Cloud dan IdP Anda.

Untuk mengonfigurasi Workload Identity Federation, lakukan langkah-langkah bergantung pada IdP eksternal Anda:

Perhatikan hal-hal berikut:

  • Project number: nomor project project Google Cloud tempat Anda membuat kumpulan workload identity.
  • ID Kumpulan: ID unik yang mengidentifikasi kumpulan workload identity.
  • ID Penyedia: ID yang mengidentifikasi penyedia kumpulan identitas workload.

Anda memerlukannya untuk konfigurasi kunci klien ABAP SDK.

Membuat akun layanan

Di konsol Google Cloud, buat akun layanan IAM khusus untuk mengakses Google Cloud API. Akun layanan ini harus merupakan akun utama dalam project Google Cloud yang berisi Google Cloud API yang akan Anda gunakan dengan menggunakan SDK.

  1. Di Konsol Google Cloud, aktifkan IAM Service Account Credentials API, Security Token Service API, dan API lain yang didukung yang ingin Anda akses menggunakan SDK.

    Buka library API

    Untuk mengetahui informasi tentang cara mengaktifkan Google Cloud API, lihat Mengaktifkan API.

  2. Buat akun layanan yang merepresentasikan workload.

  3. Berikan peran IAM yang diperlukan ke akun layanan untuk mengakses fungsi API. Guna memahami persyaratan peran untuk Google Cloud API, lihat dokumentasi API individual dan ikuti prinsip hak istimewa terendah. Untuk mengetahui informasi selengkapnya tentang peran bawaan khusus API, lihat Referensi peran dasar dan bawaan IAM.

Mengizinkan workload eksternal untuk meniru identitas akun layanan

Untuk mengizinkan beban kerja eksternal meniru identitas akun layanan, lakukan langkah-langkah bergantung pada IdP eksternal Anda:

Menerapkan kode ABAP untuk mengambil token keamanan dari IdP

ABAP SDK untuk Google Cloud menyediakan class abstrak /GOOG/CL_AUTH_WIF_BASE, yang memiliki logika untuk mengambil token keamanan OAuth 2.0 dari Layanan Token Keamanan dan token akses OAuth 2.0 dari IAM Service Account Credentials API.

Sebagai developer, Anda perlu membuat class dalam namespace yang diturunkan dari class abstrak /GOOG/CL_AUTH_WIF_BASE. Class ini harus mengimplementasikan metode GET_EXT_IDP_TOKEN dan menulis logika untuk mendapatkan token keamanan dari IdP Anda serta mengisi kolom berikut:

  • CV_TOKEN: token yang diambil dari IdP dalam format string.
  • CV_TOKEN_TYPE: jenis token keamanan yang diambil dari IdP Anda. Jenis token yang didukung adalah:
    • 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

Nilai yang diisi di CV_TOKEN dan CV_TOKEN_TYPE kemudian digunakan oleh metode class abstrak /GOOG/CL_AUTH_WIF_BASE untuk bertukar dan mengambil token OAuth 2.0 final, yang digunakan dalam panggilan API.

Contoh berikut menunjukkan contoh implementasi metode GET_EXT_IDP_TOKEN untuk penyedia Cloud lainnya seperti AWS dan Azure.

AWS

class ZCL_AUTH_WIF_AWS definition
  public
  inheriting from /GOOG/CL_AUTH_WIF_BASE
  final
  create public .

public section.

  types:
    BEGIN OF t_header_field,
      key type string,
      value TYPE string,
    END OF t_header_field .
  types:
    tt_header_field type STANDARD TABLE OF t_header_field WITH DEFAULT KEY .
  types:
    BEGIN OF t_token_request,
     url type string,
     method type string,
     headers type tt_header_field,
   END OF t_token_request .
protected section.

  methods GET_EXT_IDP_TOKEN
    redefinition .
private section.
ENDCLASS.

CLASS ZCL_AUTH_WIF_AWS IMPLEMENTATION.

METHOD get_ext_idp_token.
**********************************************************************
*  Copyright 2024 Google LLC                                         *
*                                                                    *
*  Licensed under the Apache License, Version 2.0 (the "License");   *
*  you may not use this file except in compliance with the License.  *
*  You may obtain a copy of the License at                           *
*      https://www.apache.org/licenses/LICENSE-2.0                   *
*  Unless required by applicable law or agreed to in writing,        *
*  software distributed under the License is distributed on an       *
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      *
*  either express or implied.                                        *
*  See the License for the specific language governing permissions   *
*  and limitations under the License.                                *
**********************************************************************

  DATA: ls_key       TYPE /goog/client_key.

  /goog/cl_utility=>get_client_key( EXPORTING iv_keyname    = iv_keyname
                                        IMPORTING es_client_key = ls_key ).

  DATA: lv_awsdate TYPE string.

  DATA: lv_date         TYPE dats,
        lv_time         TYPE tims,
        lv_timestamp    TYPE timestampl,
        lv_tz_utc       TYPE timezone VALUE 'UTC',
        lv_awsts        TYPE string,
        lv_timechar(32) TYPE c.

  GET TIME STAMP FIELD lv_timestamp.

  CONVERT TIME STAMP lv_timestamp TIME ZONE lv_tz_utc INTO DATE lv_date TIME lv_time.
  MOVE lv_timestamp TO lv_timechar.
  CONDENSE lv_timechar.

  lv_awsdate = lv_date(4) &&
               lv_date+4(2) &&
               lv_date+6(2) &&
               'T' &&
               lv_time(2) &&
               lv_time+2(2) &&
               lv_time+4(2) &&
               'Z'.

  TRANSLATE lv_awsdate TO UPPER CASE.

  DATA: lv_lf TYPE string.
  DATA: lv_secret_key TYPE string.
  DATA: lv_accesskey TYPE string.
  DATA: lv_datepart TYPE string.
  DATA: lv_service TYPE string.
  DATA: lv_method TYPE string.

  lv_lf = cl_abap_char_utilities=>newline.
  lv_accesskey = '<Populate AWS Access Key>'.
  lv_secret_key = '<Populate AWS Secret Access Key>'.
  lv_datepart = lv_awsdate(8).
  lv_service = 'sts'.
  lv_method = 'GET'.

  DATA: lv_canonical_query_params TYPE string.
  DATA: lv_host TYPE string.
  DATA: lv_region TYPE string.
  DATA: lv_canonical_resource_path TYPE string.

  lv_canonical_query_params = 'Action=GetCallerIdentity&Version=2011-06-15'.
  lv_host = 'sts.amazonaws.com'.
  lv_region = '<Populate your AWS Region>'.   "Example: 'us-east-1'
  lv_canonical_resource_path = '/'.

  DATA: lv_canonical_header_names TYPE string.
  DATA: lv_canonical_headers TYPE string.

  lv_canonical_header_names = 'host;x-amz-date'.
  lv_canonical_headers = 'host:' && lv_host && lv_lf && 'x-amz-date:' && lv_awsdate && lv_lf.

  DATA: lv_canonical_request TYPE string.

  CONCATENATE lv_method lv_lf
              lv_canonical_resource_path lv_lf
              lv_canonical_query_params lv_lf
              lv_canonical_headers lv_lf
              lv_canonical_header_names
              INTO lv_canonical_request.

  DATA: lv_canonical_request_hash TYPE string.

  TRY.
      cl_abap_message_digest=>calculate_hash_for_char(
       EXPORTING
         if_algorithm = 'SHA-256'
         if_data = lv_canonical_request
       IMPORTING
         ef_hashstring = lv_canonical_request_hash ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  TRANSLATE lv_canonical_request_hash TO LOWER CASE.

  DATA: lv_algorithm TYPE string.

  lv_algorithm = 'AWS4-HMAC-SHA256'.

  DATA: lv_credential_scope TYPE string.

  CONCATENATE lv_datepart '/' lv_region '/' lv_service '/' 'aws4_request' INTO lv_credential_scope.

  DATA: lv_string_to_sign TYPE string.

  CONCATENATE lv_algorithm lv_lf
              lv_awsdate lv_lf
              lv_credential_scope lv_lf
              lv_canonical_request_hash
              INTO lv_string_to_sign.

  DATA: lv_awskey TYPE string.

  CONCATENATE 'AWS4' lv_secret_key INTO lv_awskey.

  DATA: lv_ksecret TYPE xstring.

  TRY.
      lv_ksecret = cl_abap_hmac=>string_to_xstring( lv_awskey ).
    CATCH cx_abap_message_digest .
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_kdate  TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
        EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_ksecret
           if_data = lv_datepart
        IMPORTING
           ef_hmacxstring = lv_kdate ).
    CATCH cx_abap_message_digest. "
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_kregion TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
        EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_kdate
           if_data = lv_region
        IMPORTING
             ef_hmacxstring = lv_kregion ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_kservice TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
         EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_kregion
           if_data = lv_service
           IMPORTING
             ef_hmacxstring = lv_kservice ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_ksigningkey TYPE xstring.
  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
         EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_kservice
           if_data = 'aws4_request'
         IMPORTING
             ef_hmacxstring = lv_ksigningkey ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  DATA: lv_stringtosign TYPE string.

  lv_stringtosign = 'AWS4-HMAC-SHA256' && lv_lf &&
                   lv_awsdate && lv_lf &&
                   lv_datepart && '/' &&
                   lv_region && '/' &&
                   lv_service && '/aws4_request' && lv_lf &&
                   lv_canonical_request_hash.

  DATA: lv_ssignature TYPE string.

  TRY.
      cl_abap_hmac=>calculate_hmac_for_char(
         EXPORTING
           if_algorithm = 'SHA256'
           if_key = lv_ksigningkey
           if_data = lv_stringtosign
         IMPORTING
           ef_hmacstring = lv_ssignature ).
    CATCH cx_abap_message_digest.
      "Handle error
      RETURN.
  ENDTRY.

  TRANSLATE lv_ssignature TO LOWER CASE.

  DATA: lv_authorization_header TYPE string.

  lv_authorization_header = 'AWS4-HMAC-SHA256 Credential=' &&
                            lv_accesskey && '/' &&
                            lv_credential_scope &&
                            ', SignedHeaders=' &&
                            lv_canonical_header_names &&
                            ', Signature=' &&
                            lv_ssignature.

  DATA: ls_token_request TYPE t_token_request.

  ls_token_request-url = 'https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15'.
  ls_token_request-method = 'POST'.

  DATA: ls_header_field TYPE t_header_field.
  ls_header_field-key = 'Authorization'.
  ls_header_field-value = lv_authorization_header.
  APPEND ls_header_field TO ls_token_request-headers.

  CLEAR: ls_header_field.
  ls_header_field-key = 'host'.
  ls_header_field-value = 'sts.amazonaws.com'.
  APPEND ls_header_field TO ls_token_request-headers.

  CLEAR: ls_header_field.
  ls_header_field-key = 'x-amz-date'.
  ls_header_field-value = lv_awsdate.
  APPEND ls_header_field TO ls_token_request-headers.

  CLEAR: ls_header_field.
  ls_header_field-key = 'x-goog-cloud-target-resource'.
  ls_header_field-value = '//iam.googleapis.com/projects/' &&
                               ls_key-project_id &&
                               '/locations/global/workloadIdentityPools/' &&
                               ls_key-auth_param1 &&
                               '/providers/' &&
                               ls_key-auth_param2.
  APPEND ls_header_field TO ls_token_request-headers.

  cv_token = /ui2/cl_json=>serialize(  ls_token_request ).
  cv_token_type = 'urn:ietf:params:aws:token-type:aws4_request'.

ENDMETHOD.
ENDCLASS.

Azure

class ZCL_AUTH_WIF_AZURE definition
  public
  inheriting from /GOOG/CL_AUTH_WIF_BASE
  final
  create public .

public section.
protected section.

  methods GET_EXT_IDP_TOKEN
    redefinition .
private section.
ENDCLASS.

CLASS ZCL_AUTH_WIF_AZURE IMPLEMENTATION.

  METHOD GET_EXT_IDP_TOKEN.
**********************************************************************
*  Copyright 2024 Google LLC                                         *
*                                                                    *
*  Licensed under the Apache License, Version 2.0 (the "License");   *
*  you may not use this file except in compliance with the License.  *
*  You may obtain a copy of the License at                           *
*      https://www.apache.org/licenses/LICENSE-2.0                   *
*  Unless required by applicable law or agreed to in writing,        *
*  software distributed under the License is distributed on an       *
*  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,      *
*  either express or implied.                                        *
*  See the License for the specific language governing permissions   *
*  and limitations under the License.                                *
**********************************************************************

    TYPES:
      BEGIN OF t_azure_resp,
        access_token TYPE string,
      END OF t_azure_resp.

    DATA: lo_client TYPE REF TO if_http_client.

    DATA: lv_url type string.
    lv_url = 'http://169.254.169.254/metadata/identity/oauth2/token?resource=<APP_ID_URI>&api-version=2018-02-01'.
    "Replace <APP_ID_URI> with the value of Application ID URI of the application that you've configured for workload identity federation.

    cl_http_client=>create_by_url(
       EXPORTING
         url                        = lv_url
       IMPORTING
         client                     = lo_client
       EXCEPTIONS
         argument_not_found         = 1
         plugin_not_active          = 2
         internal_error             = 3
         pse_not_found              = 4
         pse_not_distrib            = 5
         pse_errors                 = 6
         oa2c_set_token_error       = 7
         oa2c_missing_authorization = 8
         oa2c_invalid_config        = 9
         oa2c_invalid_parameters    = 10
         oa2c_invalid_scope         = 11
         oa2c_invalid_grant         = 12
         OTHERS                     = 13 ).

    IF sy-subrc <> 0.
      RETURN.
    ENDIF.

    lo_client->request->set_method( 'GET' ).
    lo_client->request->set_header_field( name = 'Metadata' value = 'true' ).

    lo_client->send(
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        http_invalid_timeout       = 4
        OTHERS                     = 5 ).

    lo_client->propertytype_logon_popup = lo_client->co_disabled.

    lo_client->receive(
      EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3 ).

    DATA: lv_json TYPE string.

    lv_json = lo_client->response->get_cdata( ).

    DATA: ls_azure_resp TYPE t_azure_resp.

    /goog/cl_json=>deserialize(
      EXPORTING
        json             = lv_json
      CHANGING
        data             = ls_azure_resp ).
    cv_token = ls_azure_resp-access_token.
    cv_token_type = 'urn:ietf:params:oauth:token-type:jwt'.

  ENDMETHOD.
ENDCLASS.

Mengonfigurasi kunci klien

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Setelan Dasar > Konfigurasi Kunci Klien.
  3. Klik New Entries.
  4. Masukkan nilai untuk kolom berikut:

    Kolom Deskripsi
    Nama Kunci Google Cloud Tetapkan nama konfigurasi kunci klien.
    Nama Akun Layanan Google Cloud Kosongkan kolom ini.
    Cakupan Google Cloud Kosongkan kolom ini.
    ID Project Google Cloud Tentukan ID project Google Cloud tempat Anda membuat kumpulan workload identity.
    Nama perintah Kosongkan kolom ini.
    Class Otorisasi Tentukan class autentikasi, yang berisi implementasi metode GET_EXT_IDP_TOKEN.
    Pembuatan Cache Token Kosongkan kolom ini.
    detik Refresh Token Kosongkan kolom ini.
    Parameter Otorisasi 1 Tentukan ID kumpulan workload identity.
    Parameter Otorisasi 2 Tentukan ID penyedia workload identity.
  5. Simpan entri.

Melakukan autentikasi ke Google Workspace API menggunakan kredensial klien OAuth 2.0

Untuk mengautentikasi ke Google Workspace API menggunakan kredensial klien OAuth 2.0, Anda harus menyelesaikan konfigurasi berikut di project Google Cloud dan lanskap SAP Anda:

Konfigurasi konsol Google Cloud

Konfigurasi lanskap SAP

ABAP SDK untuk Google Cloud dikirimkan dengan komponen inti berikut, yang diperlukan untuk autentikasi berbasis kredensial klien OAuth 2.0:

  • Jenis penyedia layanan OAuth 2.0 /GOOG/ABAP_SDK yang Anda tentukan untuk konfigurasi profil klien OAuth 2.0.
  • Class autentikasi /GOOG/CL_OAUTH_GOOGLE yang Anda tentukan untuk konfigurasi kunci klien.
  • Penerapan Add-In Bisnis (BAdI) SAP yang mengisi otomatis parameter OAuth khusus Google, seperti endpoint dan setelan parameter yang diperlukan.

Namun, Anda juga harus menyelesaikan konfigurasi berikut dalam lanskap SAP:

Layar izin OAuth adalah perintah yang memberi tahu pengguna siapa yang meminta akses ke data mereka dan jenis data yang diizinkan oleh pengguna untuk diakses oleh aplikasi Anda.

  1. Di konsol Google Cloud, buka Menu  > APIs & Services > Layar izin OAuth.

    Buka layar izin OAuth

  2. Pilih jenis pengguna Eksternal untuk aplikasi Anda, lalu klik Buat.

  3. Untuk melengkapi formulir pendaftaran aplikasi, tentukan detail berikut:

    • Nama aplikasi: nama aplikasi yang memerlukan izin.
    • Email dukungan pengguna: email dukungan yang dapat digunakan pengguna untuk menghubungi Anda jika ada pertanyaan tentang izin mereka.
    • Domain yang diotorisasi: domain yang akan digunakan selama pemberian izin OAuth.
    • Informasi kontak developer: alamat email yang digunakan Google untuk memberi tahu Anda tentang perubahan apa pun pada project Anda.
  4. Klik Save and Continue.

Membuat kredensial client ID OAuth 2.0

Untuk mengautentikasi sebagai pengguna akhir dan mengakses data pengguna di aplikasi, Anda perlu membuat satu atau beberapa Client ID OAuth 2.0. Client ID digunakan untuk mengidentifikasi satu aplikasi ke server OAuth Google.

  1. Di konsol Google Cloud, buka Menu  > APIs & Services > Credentials.

    Buka Kredensial

  2. Klik Buat Kredensial > Client ID OAuth.

  3. Di kolom Jenis aplikasi, pilih Aplikasi web.

  4. Di kolom Name, ketik nama untuk kredensial. Nama ini hanya ditampilkan di Konsol Google Cloud.

  5. Di bagian URI pengalihan yang diotorisasi, klik Tambahkan URI. Kemudian, masukkan URI pengalihan SAP yang dapat menjadi tujuan pengiriman respons oleh server OAuth 2.0.

    Anda bisa mendapatkan URI pengalihan SAP dari setelan OAuth 2.0 dalam transaksi SICF.

  6. Klik Create.

  7. Catat Client-ID dan Rahasia klien.

Membuat profil klien OAuth 2.0

Sebagai developer ABAP, Anda membuat profil klien OAuth dengan cakupan OAuth 2.0 yang diperlukan untuk persyaratan bisnis Anda. Untuk informasi tentang cakupan OAuth 2.0 untuk Google API, lihat Cakupan OAuth 2.0 untuk Google API.

Contoh profil klien OAuth /GOOG/OAUTH_PROFILE_SAMPLE dikirim dengan SDK, dengan cakupan OAuth 2.0 yang dikonfigurasi untuk Google Sheets API.

  1. Di SAP GUI, masukkan kode transaksi SE80.
  2. Dari menu drop-down, pilih Development Object.
  3. Untuk membuat objek pengembangan di namespace kustom, pilih Create > Lainnya > Profil Klien OAuth 2.0 di menu konteks nama objek.
  4. Masukkan detail berikut:

    • Di kolom Profil Klien, masukkan nama profil klien.
    • Di kolom Type, pilih /GOOG/ABAP_SDK. Ini adalah jenis penyedia default yang dikirim dengan ABAP SDK untuk Google Cloud.
  5. Tambahkan cakupan yang diperlukan ke profil klien Anda. Untuk informasi tentang cakupan OAuth 2.0, lihat Cakupan OAuth 2.0 untuk Google API.

  6. Simpan profil klien ke paket pengembangan Anda. Menyertakan profil klien dalam permintaan transport, yang dapat dipindahkan ke lingkungan yang lebih tinggi.

Mengonfigurasi klien OAuth 2.0

Sebagai administrator SAP, Anda dapat mengaitkan profil klien OAuth dengan kredensial klien Google Cloud.

Ini adalah aktivitas satu kali yang perlu Anda lakukan pada setiap sistem SAP dalam lanskap SAP (Pengembangan, Pengujian, dan Produksi).

  1. Di SAP GUI, masukkan kode transaksi OA2C_CONFIG. Halaman login SAP akan terbuka di browser default.
  2. Masuk dengan kredensial SAP Anda.
  3. Untuk membuat klien OAuth 2.0, klik Buat.
  4. Di kotak dialog Create a new OAuth 2.0 client:
    1. Pilih profil klien OAuth 2.0 yang Anda buat sebelumnya di halaman Membuat profil klien OAuth 2.0 di sistem SAP.
    2. Masukkan nama konfigurasi.
    3. Masukkan Client ID OAuth 2.0 dari kredensial Google Cloud yang Anda buat sebelumnya di bagian Membuat kredensial client ID OAuth 2.0.
    4. Klik OK.
  5. Di tab Administration, di bagian General Settings, masukkan rahasia klien dari kredensial Google Cloud yang Anda buat sebelumnya di bagian Membuat kredensial client ID OAuth 2.0.
  6. Jika menggunakan server proxy untuk merutekan traffic HTTP/HTTPS keluar dari sistem SAP, Anda perlu mempertahankan detail host proxy berikut di bagian Setelan Akses:

    • Host proxy
    • Porta proxy
    • Pengguna proxy
    • Kata Sandi Proksi
  7. Klik Save.

Mengonfigurasi kunci klien

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.
  3. Klik New Entries.
  4. Masukkan nilai untuk kolom berikut:

    Kolom Deskripsi
    Nama Kunci Google Cloud Tetapkan nama konfigurasi kunci klien.
    Nama Akun Layanan Google Cloud Kosongkan kolom ini.
    Cakupan Google Cloud Kosongkan kolom ini.
    ID Project Google Cloud Tentukan ID project Google Cloud yang berisi API target Anda.
    Nama perintah Kosongkan kolom ini.
    Class Otorisasi Tentukan class autentikasi, /GOOG/CL_OAUTH_GOOGLE.
    Pembuatan Cache Token Kosongkan kolom ini.
    detik Refresh Token Kosongkan kolom ini.
    Parameter Otorisasi 1 Tentukan nama profil klien OAuth yang Anda buat sebelumnya di bagian Membuat profil klien OAuth 2.0 di sistem SAP.
    Parameter Otorisasi 2

    Tetapkan nama konfigurasi yang Anda tetapkan di klien OAuth 2.0 untuk client ID.

    Kolom ini wajib diisi jika Anda telah mengaitkan satu profil klien OAuth dengan lebih dari satu client ID.

    Untuk informasi selengkapnya, lihat Skenario beberapa project Google Cloud.

  5. Simpan entri baru.

Meminta token akses OAuth 2.0

Sebagai pengguna akhir, Anda perlu meminta token akses OAuth 2.0 untuk mengizinkan akses ke resource API.

Ini adalah aktivitas satu kali yang perlu dilakukan setiap pengguna pada setiap sistem SAP dalam lanskap SAP Anda (Pengembangan, Pengujian, dan Produksi). Jika cakupan OAuth diubah, pengguna perlu mengulangi aktivitas ini.

  1. Di SAP GUI, masukkan kode transaksi OA2C_GRANT. Halaman login SAP akan terbuka di browser default.
  2. Masuk dengan kredensial SAP Anda.
  3. Pilih client ID yang ingin Anda gunakan untuk mengakses API.
  4. Klik Request OAuth 2.0 Tokens.
  5. Di layar izin Login dengan Google, masukkan kredensial akun Google Anda, lalu klik Allow.

    Indikator hijau di kolom Status Akses menunjukkan akses ke resource API diizinkan sesuai dengan profil klien OAuth 2.0.

Skenario beberapa project Google Cloud

Jika Anda telah mengaktifkan Google Cloud API di lebih dari satu project Google Cloud, ikuti panduan ini untuk menyiapkan autentikasi menggunakan kredensial klien OAuth 2.0:

Mengautentikasi dengan menggunakan kunci API yang disimpan di SAP SSF

Langkah-langkah konfigurasi tingkat tinggi adalah sebagai berikut:

Membuat kunci API

Untuk autentikasi menggunakan kunci API, Anda perlu membuat kunci API. String kunci API adalah string terenkripsi, misalnya, AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe. ABAP SDK untuk Google Cloud menggunakan string kunci API dalam permintaan HTTP untuk melakukan autentikasi dengan aman saat memanggil Google Cloud API.

Google Cloud menyediakan beberapa cara untuk membuat kunci API.

Untuk membuat kunci API menggunakan konsol Google Cloud, lakukan langkah-langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Langganan.

    Buka Kredensial

  2. Klik Create Credentials dan pilih API key dari menu.

    • Dialog API key created akan menampilkan string kunci API. Salin string kunci Anda dan amankan. Anda memerlukan kunci API ini untuk mengonfigurasi autentikasi ke Google Cloud.

    • Secara default, kunci API tidak dibatasi. Sebaiknya batasi kunci API dengan memilih API yang dapat menggunakan kunci API ini. Untuk mengetahui informasi selengkapnya tentang cara menambahkan pembatasan API, lihat artikel Menambahkan pembatasan API.

Menyimpan kunci API di SSF

ABAP SDK untuk Google Cloud menyediakan opsi untuk menyimpan kunci API dengan aman menggunakan mekanisme SAP Secure Store and Forward (SSF).

Dengan menggunakan opsi SSF, Anda dapat menyimpan Kunci API dalam format terenkripsi di tabel /GOOG/APIKEY_BIN. Saat API dipanggil, kunci API akan diambil dari tabel /GOOG/APIKEY_BIN, didekripsi, dan ditambahkan ke URI endpoint API.

Untuk tujuan keamanan, Anda tidak boleh melihat konten /GOOG/APIKEY_BIN menggunakan alat standar, transaksi seperti SE16, SE16N, atau SE11.

Prasyarat

Untuk autentikasi menggunakan kunci API yang disimpan di SAP SSF, Anda harus menginstal SAP Cryptographic Library versi 8.5 dan yang lebih baru di sistem SAP. Untuk mengetahui informasi selengkapnya tentang SAP Cryptographic Library, lihat 1848999 - Central Note for CommonCryptoLib 8 (SAPCRYPTOLIB) dan 397175 - software SAP Cryptographic - kontrol ekspor.

Untuk memverifikasi versi SAP Cryptographic Library, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi STRUST.
  2. Buka menu Environment, lalu klik Display SSF Version.

Menyiapkan aplikasi SSF

Pada tabel SSFAPPLIC, buat aplikasi SSF baru ZG_APK yang mengenkripsi kunci API. ZG_APK adalah nama aplikasi SSF default.

Atau, Anda dapat membuat aplikasi SSF dengan nama pilihan Anda atau menggunakan aplikasi SSF yang sudah ada dengan nama berbeda. Jika ingin menggunakan aplikasi SSF yang berbeda untuk enkripsi, Anda harus mengonfigurasi nama aplikasi SSF di Authorization Parameter 1 tabel kunci klien.

Untuk membuat entri baru dalam tabel SSFAPPLIC, lakukan langkah-langkah berikut:

  1. Di SAP GUI, masukkan kode transaksi SE16.
  2. Di kolom Table Name, masukkan SSFAPPLIC, lalu buat entri baru.
  3. Di kolom APPLIC, masukkan ZG_APK.
  4. Tentukan nilai di kolom berikut.

    Kolom Nilai
    APPLIC ZG_APK
    B_TOOLKIT Pilih flag.
    B_FORMAT Pilih flag.
    B_PAB Pilih flag.
    B_PROFID Pilih flag.
    B_PROFILE Pilih flag.
    B_HASHALG Kosongkan kolom ini.
    B_ENCRALG Kosongkan kolom ini.
    B_INCCERTS Kosongkan kolom ini.
    B_DETACHED Kosongkan kolom ini.
    B_ASKPWD Kosongkan kolom ini.
    B_DISTRIB Pilih flag.
    DESCRIPT API Key Encryption for GCP
  5. Simpan entri baru.

Membuat parameter SSF
  1. Di SAP GUI, masukkan kode transaksi SM30.

  2. Buka tampilan VSSFARGS.

  3. Untuk aplikasi ZG_APK (API Key Encryption for GCP), buat entri baru. Parameter SSF khusus aplikasi diisi secara otomatis.

  4. Simpan entri baru.

Membuat Lingkungan Keamanan Pribadi (Personal Security Environment/PSE)

  1. Di SAP GUI, masukkan kode transaksi STRUST.

  2. Di bagian node SSF API Key Encryption for GCP, klik kanan dan pilih Create.

  3. Di kolom Algorithm, pilih RSA. Biarkan kolom lain dengan nilai default yang diisi sistem.

  4. Simpan entri baru.

Menyimpan kunci API

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure API Key (Using SSF).

  3. Di Nama Kunci Google, masukkan nama konfigurasi kunci klien.

  4. Pada kolom Kunci API, masukkan kunci API yang Anda buat sebelumnya di bagian Membuat kunci API.

  5. Pilih Simpan.

  6. Klik Execute untuk menyimpan kunci API.

Mengonfigurasi kunci klien

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.

  3. Klik New Entries.

  4. Masukkan nilai untuk kolom berikut:

    Kolom Deskripsi
    Nama Kunci Google Cloud Tetapkan nama konfigurasi kunci klien. Misalnya, DEMO_API_KEY.
    Nama Akun Layanan Google Cloud Kosongkan kolom ini.
    Cakupan Google Cloud Tentukan cakupan akses API, https://www.googleapis.com/auth/cloud-platform.
    ID Project Tentukan ID project Google Cloud yang berisi API target Anda.
    Nama perintah Kosongkan kolom ini.
    Class Otorisasi Tentukan class otorisasi, /GOOG/CL_AUTH_API_KEY_SSF.
    Pembuatan Cache Token

    Tanda yang menentukan apakah token akses yang diambil dari Google Cloud akan disimpan dalam cache atau tidak.

    Sebaiknya aktifkan cache token setelah Anda selesai mengonfigurasi dan menguji koneksi ke Google Cloud. Untuk mengetahui informasi selengkapnya tentang penyimpanan token ke dalam cache, lihat Mengaktifkan penyimpanan token ke dalam cache.

    detik Refresh Token Tentukan jumlah waktu, dalam detik, sebelum masa berlaku token akses berakhir dan harus dimuat ulang. Nilai defaultnya adalah 3500.
    Parameter Otorisasi 1 Jika nama aplikasi SSF berbeda dengan ZG_APK, tentukan nama aplikasi SSF Anda.
    Parameter Otorisasi 2 Kosongkan kolom ini.
  5. Simpan entri baru.

Membuat tujuan RFC baru

Untuk API yang ingin Anda gunakan dengan ABAP SDK untuk Google Cloud, buat tujuan RFC baru.

Untuk informasi tentang cara membuat tujuan RFC, lihat Tujuan RFC.

Jika tujuan RFC tidak dibuat dan dikonfigurasi, fungsi ABAP SDK untuk Google Cloud yang menggunakan endpoint API default akan dipertahankan dalam setiap stub klien API.

Mengonfigurasi pemetaan layanan

Konfigurasikan tabel pemetaan layanan untuk API yang ingin Anda gunakan menggunakan ABAP SDK untuk Google Cloud.

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Service Mapping.

  3. Klik New Entries.

  4. Tentukan tujuan RFC untuk API yang akan Anda gunakan, misalnya, addressvalidation v1. Jika Anda akan menggunakan API lain, tentukan tujuan RFC untuk API tersebut.

    Nama Nama Layanan RFC Destination
    Nama Kunci Google Cloud addressvalidation:v1 ZGOOG_ADDRVALDN_V1
  5. Simpan entri baru.

Menghapus kunci API

Jika kunci API tidak lagi digunakan, Anda dapat menghapus kunci API tersebut dari sistem SAP.

Untuk menghapus kunci API, formulir dengan mengikuti langkah-langkah berikut:

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure API Key (Using SSF).

  3. Di kolom Google Key Name, masukkan nama konfigurasi kunci klien.

  4. Pilih Hapus.

  5. Klik Execute untuk menghapus kunci API.

Mengautentikasi dengan menggunakan kunci API yang disimpan di Secret Manager

Langkah-langkah konfigurasi tingkat tinggi adalah sebagai berikut:

Membuat kunci API

Untuk autentikasi menggunakan kunci API, Anda perlu membuat kunci API. String kunci API adalah string terenkripsi, misalnya, AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe. ABAP SDK untuk Google Cloud menggunakan string kunci API dalam permintaan HTTP untuk melakukan autentikasi dengan aman saat memanggil Google Cloud API.

Google Cloud menyediakan beberapa cara untuk membuat kunci API.

Untuk membuat kunci API menggunakan konsol Google Cloud, lakukan langkah-langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Langganan.

    Buka Kredensial

  2. Klik Create Credentials dan pilih API key dari menu.

    • Dialog API key created akan menampilkan string kunci API. Salin string kunci Anda dan amankan. Anda memerlukan kunci API ini untuk mengonfigurasi autentikasi ke Google Cloud.

    • Secara default, kunci API tidak dibatasi. Sebaiknya batasi kunci API dengan memilih API yang dapat menggunakan kunci API ini. Untuk mengetahui informasi selengkapnya tentang cara menambahkan pembatasan API, lihat artikel Menambahkan pembatasan API.

Membuat secret dan menyimpan kunci API

ABAP SDK untuk Google Cloud menyediakan opsi untuk menyimpan kunci API dengan aman menggunakan layanan Secret Manager Google Cloud. Untuk menyimpan string kunci API dengan aman, Secret Manager memungkinkan Anda mengikuti praktik terbaik untuk menggunakan kunci API dengan aman.

Untuk membuat secret dan menyimpan kunci API, lakukan langkah-langkah berikut:

  1. Mengaktifkan Secret Manager API.

    Buka library API

  2. Di konsol Google Cloud, buat secret, dan simpan kunci API sebagai versi terbaru.

    Buka Secret manager

Untuk mengetahui informasi tentang cara membuat secret, lihat Membuat rahasia.

ABAP SDK untuk Google Cloud secara default hanya mengambil versi terbaru secret.

Mengonfigurasi kunci klien untuk akses Secret Manager

Secret Manager API menggunakan token untuk autentikasi. Oleh karena itu, Anda perlu menyiapkan autentikasi berbasis token untuk mengakses Secret Manager API, bergantung pada deployment SAP Anda.

Gunakan salah satu metode berikut untuk menyiapkan autentikasi berbasis token untuk mengakses Secret Manager API:

Catat nama kunci klien yang Anda buat untuk akses Secret Manager.

Mengonfigurasi kunci klien untuk secret

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Client Key.

  3. Klik New Entries.

  4. Masukkan nilai untuk kolom berikut:

    Kolom Deskripsi
    Nama Kunci Google Cloud Tetapkan nama konfigurasi kunci klien. Misalnya, DEMO_API_KEY.
    Nama Akun Layanan Google Cloud Kosongkan kolom ini.
    Cakupan Google Cloud Tentukan cakupan akses API, https://www.googleapis.com/auth/cloud-platform.
    ID Project Tentukan ID project Google Cloud yang berisi API target Anda.
    Nama perintah Kosongkan kolom ini.
    Class Otorisasi Tentukan /GOOG/CL_AUTH_API_KEY_SM
    Pembuatan Cache Token

    Tanda yang menentukan apakah token akses yang diambil dari Google Cloud akan disimpan dalam cache atau tidak.

    Sebaiknya aktifkan cache token setelah Anda selesai mengonfigurasi dan menguji koneksi ke Google Cloud. Untuk mengetahui informasi selengkapnya tentang penyimpanan token ke dalam cache, lihat Mengaktifkan penyimpanan token ke dalam cache.

    detik Refresh Token Tentukan jumlah waktu, dalam detik, sebelum masa berlaku token akses berakhir dan harus dimuat ulang. Nilai defaultnya adalah 3500.
    Parameter Otorisasi 1 Tentukan nama kunci klien yang Anda buat untuk akses Secret Manager. Misalnya, CLIENT_KEY_SM.
    Parameter Otorisasi 2 Tentukan nama secret, yang menyimpan kunci API-nya. Misalnya, TEST_SECRET.
  5. Simpan entri baru.

Membuat tujuan RFC baru

Untuk API yang ingin Anda gunakan dengan ABAP SDK untuk Google Cloud, buat tujuan RFC baru.

Untuk informasi tentang cara membuat tujuan RFC, lihat Tujuan RFC.

Jika tujuan RFC tidak dibuat dan dikonfigurasi, fungsi ABAP SDK untuk Google Cloud yang menggunakan endpoint API default akan dipertahankan dalam setiap stub klien API.

Mengonfigurasi pemetaan layanan

Konfigurasikan tabel pemetaan layanan untuk API yang ingin Anda gunakan menggunakan ABAP SDK untuk Google Cloud.

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Basic Settings > Configure Service Mapping.

  3. Klik New Entries.

  4. Tentukan tujuan RFC untuk API yang akan Anda gunakan, misalnya, addressvalidation v1. Jika Anda akan menggunakan API lain, tentukan tujuan RFC untuk API tersebut.

    Nama Nama Layanan RFC Destination
    Nama Kunci Google Cloud addressvalidation:v1 ZGOOG_ADDRVALDN_V1
  5. Simpan entri baru.

Memvalidasi pengambilan kunci API dari Secret Manager

Untuk memvalidasi pengambilan kunci API dari Secret Manager, lakukan langkah-langkah berikut:

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Utilities > validate API key retrieval (Using Secret Manager).
  3. Tentukan nama kunci klien.
  4. Klik Execute untuk memeriksa apakah kunci API berhasil diambil dari Secret Manager.

Memvalidasi konfigurasi autentikasi

Untuk memvalidasi konfigurasi autentikasi, lakukan langkah-langkah berikut:

  1. Di GUI SAP, jalankan kode transaksi /GOOG/SDK_IMG.

    Atau, jalankan kode transaksi SPRO, lalu klik SAP Reference IMG.

  2. Klik ABAP SDK for Google Cloud > Utilities > Validate Authentication Configuration.

  3. Masukkan nama kunci klien.

  4. Klik Execute untuk memeriksa apakah keseluruhan alur berhasil dikonfigurasi.

    Centang hijau di kolom Result menunjukkan bahwa semua langkah konfigurasi berhasil diselesaikan.

Dapatkan dukungan

Jika Anda memerlukan bantuan untuk menyelesaikan masalah terkait ABAP SDK untuk Google Cloud, lakukan hal berikut: