Halaman ini menjelaskan dua identitas Cloud Run, dan bagaimana Library Klien Cloud menggunakan identitas layanan untuk memanggil Google Cloud API. Contoh produk Google Cloud yang memiliki Library Klien Cloud mencakup Cloud Storage, Firestore, Cloud SQL, Pub/Sub, dan yang disebut Cloud Tasks. Halaman ini ditujukan untuk admin, operator, atau developer yang mengelola kebijakan organisasi dan akses pengguna, atau siapa saja yang ingin mempelajari topik tersebut.
Identitas Cloud Run
Untuk menggunakan Cloud Run, Google Cloud memerlukan pengguna Cloud Run dan instance Cloud Run ke masing-masing memiliki identitas.
- Identitas pengguna Cloud Run disebut sebagai akun deployer Cloud Run. Saat mengelola revisi atau pekerjaan Anda, Anda menggunakan identitas ini untuk membuat permintaan ke Cloud Run Admin API.
- Identitas instance Cloud Run disebut sebagai Identitas layanan Cloud Run. Saat Cloud Run kode yang Anda tulis berinteraksi dengan Library Klien Cloud, atau memanggil Layanan Cloud Run untuk komunikasi antarlayanan, Anda menggunakan identitas ini untuk membuat permintaan dari Cloud Run ke Google Cloud API atau layanan Cloud Run lainnya.
Untuk mengakses dan membuat permintaan ke Google Cloud API atau berkomunikasi antarlayanan, setiap identitas harus memiliki izin yang diberikan kepada mereka di Identity and Access Management (IAM).
Memanggil Cloud Run Admin API dengan akun deployer
Anda dapat memanggil Cloud Run Admin API dari Cloud Run menggunakan akun deployer Cloud Run. Akun deployer dapat berupa akun pengguna atau akun layanan, dan mewakili akun yang ditandatangani ke dalam lingkungan Google Cloud.
Saat akun deployer menggunakan Cloud Run, IAM memeriksa apakah akun deployer memiliki izin yang diperlukan untuk melakukan operasi Cloud Run. Diagram berikut menunjukkan bagaimana pengguna memanggil Cloud Run Admin API untuk men-deploy revisi baru dari Konsol Google Cloud:
Memanggil Google Cloud API dengan identitas layanan
Saat instance Cloud Run berinteraksi dengan instance lain yang diautentikasi IAM layanan Cloud Run, atau memanggil Library Klien Cloud kode aplikasi atau fitur bawaan seperti Integrasi Cloud Run atau Pemasangan volume Cloud Storage, lingkungan Google Cloud menggunakan Kredensial Default Aplikasi (ADC) untuk otomatis mendeteksi apakah identitas layanan Cloud Run diotentikasi untuk melakukan operasi API. Cloud Run identitas layanan adalah akun layanan yang ditetapkan sebagai Identitas instance Cloud Run saat Anda men-deploy revisi atau mengeksekusi tugas.
Akun layanan yang digunakan sebagai akun deployer hanya akan digunakan sebagai identitas layanan jika Anda mengonfigurasi akun layanan yang sama di konfigurasi Cloud Run.
Bagian selanjutnya dari panduan ini menjelaskan cara layanan atau tugas Cloud Run menggunakan identitas layanan untuk memanggil dan mengakses layanan dan API Google. Untuk selengkapnya informasi tentang konfigurasi identitas layanan, lihat identitas layanan halaman konfigurasi untuk layanan dan tugas.
Jenis akun layanan untuk identitas layanan
Saat instance Cloud Run Anda melakukan panggilan ke Google Cloud API untuk menjalankan operasi yang diperlukan, Cloud Run otomatis menggunakan akun layanan sebagai identitas layanan. Dua jenis akun layanan yang dapat digunakan sebagai identitas layanan adalah sebagai berikut:
- Akun layanan yang dikelola pengguna (direkomendasikan): Anda membuat ini secara manual
akun layanan dan menentukan rangkaian
izin akses minimal yang harus
akun layanan perlu mengakses resource Google Cloud tertentu. Tujuan
akun layanan yang dikelola pengguna mengikuti format
SERVICE_ACCOUNT_NAME@PROJECT_ID.
. - Akun layanan default Compute Engine: Cloud Run
otomatis menyediakan akun layanan default Compute Engine sebagai
identitas layanan default. Akun layanan default Compute Engine mengikuti
format
PROJECT_NUMBER-compute@
.
Menghindari akun layanan default saat mengonfigurasi identitas layanan
Secara default, akun layanan default Compute Engine akan otomatis dibuat. Jika Anda tidak menentukan akun layanan saat Layanan atau tugas Cloud Run dibuat, Cloud Run menggunakan akun layanan ini.
Bergantung pada konfigurasi kebijakan organisasi
Anda, akun layanan default mungkin
otomatis diberikan peran Editor di
proyek. Sebaiknya Anda menonaktifkan pemberian peran otomatis paling lambat
memberlakukan kebijakan organisasi iam.automaticIamGrantsForDefaultServiceAccounts
batasan. Jika Anda membuat organisasi setelah 3 Mei 2024, ini
batasan ini diberlakukan secara default.
Jika menonaktifkan pemberian peran otomatis, Anda harus memutuskan peran mana yang akan diberikan ke default akun layanan, lalu berikan peran Anda sendiri.
Jika akun layanan default sudah memiliki peran Editor, sebaiknya Anda mengganti Peran editor dengan peran yang kurang permisif. Untuk mengubah peran akun layanan secara aman, gunakan Simulator Kebijakan untuk melihat dampak perubahan, lalu berikan dan cabut peran yang sesuai.
Cara kerja identitas layanan
Saat kode Anda memanggil atau membuat permintaan ke Library Klien Cloud, terjadi:
- Library klien mendeteksi bahwa permintaan dibuat ke file Google Cloud Library Klien Cloud atau API, dan meminta token akses OAuth 2.0 untuk dan identitas layanan dari server metadata instance.
- Server metadata instance menyediakan token akses IAM untuk akun layanan yang dikonfigurasi sebagai identitas layanan.
- Permintaan ke Google Cloud API dikirim dengan token akses OAuth 2.0.
- IAM memverifikasi identitas layanan yang dirujuk dalam akses untuk izin yang diperlukan, dan memeriksa binding kebijakan sebelum meneruskan panggilan ke endpoint API.
- Google Cloud API akan melakukan operasi tersebut.
Membuat token akses untuk permintaan Cloud Run guna memanggil Google Cloud API
Jika kode Cloud Run Anda menggunakan Library Klien Cloud, Anda mengonfigurasi layanan identitas di Cloud Run dengan menetapkan akun layanan di deployment atau eksekusi. Hal ini memungkinkan library memperoleh akses secara otomatis token untuk mengotentikasi permintaan kode Anda. Jika kode Cloud Run Anda berkomunikasi dengan layanan Cloud Run lain yang diautentikasi, Anda harus menambahkan token akses ke permintaan.
Untuk menetapkan akun layanan sebagai identitas layanan, lihat panduan berikut:
Namun, jika Anda menggunakan kode kustom Anda sendiri atau perlu membuat permintaan secara terprogram, Anda dapat menggunakan server metadata secara langsung untuk mengambil token identitas dan token akses secara manual seperti yang dijelaskan bagian berikutnya. Perhatikan bahwa Anda tidak dapat mengkueri server ini langsung dari karena server metadata hanya tersedia untuk workload yang berjalan di Google Cloud.
Mengambil ID dan token akses menggunakan server metadata
Dua jenis token yang dapat Anda ambil dengan server metadata adalah sebagai berikut:
- Token akses OAuth 2.0, yang digunakan untuk memanggil sebagian besar Library Klien Google API.
- Token ID, yang digunakan untuk memanggil Layanan Cloud Run atau Fungsi Cloud Run, atau untuk memanggil layanan apa pun agar memvalidasi token ID.
Untuk mengambil token, ikuti petunjuk di tab yang sesuai untuk jenis token yang Anda gunakan:
Token akses
Misalnya, jika Anda ingin membuat topik Pub/Sub, gunakan metode
projects.topics.create
.
Gunakan Server Metadata Compute untuk mengambil token akses:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \ --header "Metadata-Flavor: Google"
Endpoint ini menampilkan respons JSON dengan atribut
access_token
.Dalam permintaan protokol HTTP Anda, permintaan tersebut harus diotentikasi dengan token akses di header
Authorization
:PUT https://pubsub.googleapis.com/v1/projects/
PROJECT_ID
/topics/TOPIC_ID
Authorization: BearerACCESS_TOKEN
Dengan keterangan:
PROJECT_ID
adalah project ID Anda.TOPIC_ID
adalah topic ID Anda.ACCESS_TOKEN
adalah token akses yang Anda ambil di langkah sebelumnya.
Respons:
{ "name": "projects/
PROJECT_ID
/topics/TOPIC_ID
" }
Token ID
Gunakan Server Metadata Compute untuk mengambil token identitas dengan audiens tertentu:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=AUDIENCE" \
--header "Metadata-Flavor: Google"
Dengan AUDIENCE
adalah Audiens JWT yang diminta.
Untuk layanan Cloud Run, audiens harus berupa URL layanan yang Anda panggil atau audiens kustom, seperti domain kustom, yang dikonfigurasi untuk layanan.
https://service.domain.com
Resource lainnya dapat berupa Client ID OAuth dari resource yang dilindungi IAP:
1234567890.apps.googleusercontent.com
Langkah berikutnya
- Konfigurasi identitas layanan untuk layanan atau tugas.
- Pelajari cara mengelola akses atau mengautentikasi developer, layanan, dan pengguna akhir ke layanan Anda.
- Untuk panduan menyeluruh aplikasi yang menggunakan identitas layanan untuk meminimalkan risiko keamanan, ikuti mengamankan tutorial layanan Cloud Run.