Mengamankan fungsi Cloud Run

Halaman ini memberikan ringkasan umum tentang cara mengontrol interaksi dengan resource fungsi Cloud Run.

Kontrol akses

Ada dua pendekatan untuk mengontrol akses ke fungsi Cloud Run:

Mengamankan akses dengan identitas

Salah satu cara untuk mengontrol akses ke suatu fungsi adalah dengan mewajibkan entity peminta mengidentifikasi dirinya sendiri menggunakan kredensial. Kredensial adalah semacam "nama", yang dilindungi oleh secret yang diketahui atau dapat diakses entity, seperti sandi atau dongle hardware. Secara default, fungsi di-deploy sebagai pribadi dan memerlukan kredensial tersebut. Namun, fungsi juga dapat di-deploy sebagai publik, yang tidak memerlukan kredensial.

Langkah pertama dalam proses ini adalah memvalidasi kredensial untuk memastikan peminta sesuai dengan klaimnya, yaitu menyertakan kombinasi nama dan secret yang benar. Langkah ini disebut (Authentication).

Setelah identitas peminta diautentikasi, tingkat aksesnya, yaitu izin yang telah diberikan kepada identitas tersebut, dapat dievaluasi. Langkah ini disebut (Authorization).

Autentikasi

Cloud Run Functions mendukung dua jenis identitas berbeda, yang juga disebut principal:

  • Akun layanan: Akun ini adalah akun khusus yang berfungsi sebagai identitas non-orang, seperti fungsi atau aplikasi atau VM. Akun ini memberi Anda cara untuk mengautentikasi non-orang ini.
  • Akun pengguna: Akun ini mewakili orang, baik sebagai pemegang Akun Google perorangan atau sebagai bagian dari entity yang dikontrol Google seperti Google Grup.

Untuk akun layanan dan akun pengguna, bagian nama kredensial biasanya berupa alamat email yang terkait dengan akun tersebut. Secret untuk akun pengguna biasanya berupa sandi, dan untuk akun layanan, biasanya kunci pribadi dari pasangan kunci yang dibuat bersama akun tersebut.

Namun, sandi pengguna dan kunci akun layanan sendiri sangat kuat: keduanya dapat memberikan akses yang luas ke data dan fungsionalitas, serta tetap efektif hingga dicabut atau diubah secara aktif. Jadi, untuk membatasi potensi kerusakan yang mungkin terjadi jika kredensial bocor, di Google Cloud , kredensial inti ini diganti dengan kredensial jangka pendek berdasarkan kredensial tersebut, yaitu token yang memiliki masa berlaku terbatas dan dibuat dengan cepat sebagai bagian dari urutan permintaan. Token diteruskan dengan permintaan dan berfungsi untuk mengautentikasi akun dengan aman.

Ada dua jenis token yang digunakan di fungsi Cloud Run: token akses dan token ID. Token akses biasanya digunakan untuk mengautentikasi panggilan API dan token ID digunakan untuk mengautentikasi panggilan ke kode yang dibuat developer, misalnya, jika suatu fungsi memanggil fungsi lain. Token tersebut dibuat menggunakan framework OAuth 2 dan ekstensinya, Open Identity Connect, tetapi urutannya rumit dan rentan error. Sangat disarankan untuk menggunakan Library Klien Cloud guna mengelola proses.

Otorisasi

Setelah identitas entity peminta dikonfirmasi, hal yang boleh dilakukan peminta harus dievaluasi. Evaluasi ini didasarkan pada izin yang diberikan pada akun terautentikasi saat disiapkan. Cloud Run Functions menggunakan Identity and Access Management (IAM) untuk melakukan hal ini. Peran, yang merupakan rangkaian izin tunggal yang dikelompokkan untuk kemudahan, diberikan ke akun, baik secara langsung atau melalui konfigurasi yang disebut kebijakan. Setiap izin tunggal dalam kumpulan peran biasanya berhubungan dengan satu panggilan REST API yang diekspos oleh layanan yang diminta. Untuk informasi lebih lanjut tentang proses ini, lihat Mengizinkan Akses melalui IAM.

Kontrol akses berbasis jaringan

Anda juga dapat membatasi akses dengan menentukan setelan jaringan untuk setiap fungsi. Hal ini memungkinkan kontrol yang telah disesuaikan atas ingress dan egress jaringan ke dan dari fungsi Anda.

Isolasi dan sandbox

Secara internal, instance fungsi diisolasi satu sama lain menggunakan platform sandbox gVisor. Secara desain, suatu fungsi tidak dapat mengakses lingkungan operasi fungsi lain.

Update lingkungan eksekusi

Google menyediakan patch keamanan dan update pemeliharaan setelah periode uji stabilitas. Cloud Run Functions dapat menerapkan update pada aspek lingkungan eksekusi lainnya, seperti sistem operasi atau paket yang disertakan. Update ini membantu menjaga keamanan lingkungan eksekusi fungsi Anda.

Update keamanan Cloud Run Functions

Anda dapat memilih salah satu kebijakan update keamanan berikut:

  • Update otomatis (default): Update dan patch keamanan pada lingkungan runtime dipublikasikan dalam image runtime versi baru. Setelah periode pengujian stabilitas dan keandalan, runtime yang diupdate akan diluncurkan ke semua fungsi sehingga update berlangsung tanpa waktu non-operasional. Update keamanan otomatis tersedia dengan Cloud Run Functions (generasi ke-1) dan Cloud Run Functions. Untuk menerapkan perbaikan keamanan tingkat bahasa, Anda mungkin perlu membangun ulang fungsi yang menggunakan bahasa yang dikompilasi seperti Go atau Java.

  • Update saat deployment: Update dan patch keamanan diterapkan ke runtime hanya ketika fungsi di-deploy atau di-deploy ulang, kecuali jika dinyatakan lain. Update saat deployment tersedia di Cloud Run Functions (generasi ke-1) dan Cloud Run Functions.

Kebijakan update runtime dapat diubah menggunakan flag --runtime-update-policy dalam perintah gcloud functions deploy Anda.

Untuk mempelajari lebih lanjut update keamanan lingkungan eksekusi, lihat kebijakan update keamanan.