Anda dapat menggunakan binding akses untuk mengontrol aplikasi dan resource mana yang dapat diakses oleh grup pengguna Anda. Binding akses menentukan cara menerapkan tingkat akses dan kontrol sesi ke grup pengguna. Anda dapat menerapkan tingkat akses dan kontrol sesi yang sama ke semua aplikasi, atau Anda dapat menentukan perilaku tertentu untuk setiap aplikasi.
Untuk memastikan bahwa Anda mengonfigurasi semuanya dengan benar, Anda dapat menguji kebijakan sebelum menerapkannya.
Saat menggunakan binding akses, perhatikan perilaku berikut:
- Grup pengguna hanya dapat memiliki satu binding akses.
- Jika pengguna berada di beberapa grup, pengguna akan diberi akses jika ada kebijakan yang mengizinkannya (
ORbukanAND). - Untuk kontrol sesi, hanya binding akses yang baru saja dibuat yang berlaku.
Menggunakan satu konfigurasi untuk semua aplikasi
Metode ini menerapkan tingkat akses dan kontrol sesi yang sama ke semua aplikasi yang diakses oleh grup pengguna.
Sebaiknya uji kebijakan Anda dengan uji coba atau terapkan ke grup pengujian kecil sebelum menerapkannya dalam produksi.
console
Di konsol Google Cloud , buka halaman Console & APIs Access Policy.
Jika diminta, pilih organisasi.
Klik Tambahkan kebijakan akses.
Pilih grup yang akan menerapkan kebijakan.
Di bagian Pilih aplikasi yang mengakses Google Cloud, pilih Semua aplikasi.
Klik Simpan.
gcloud
Buat binding akses.
gcloud access-context-manager cloud-bindings create \ --group-key GROUP_ID --organization ORG_ID --level DEFAULT_ACCESS_LEVEL [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]
Ganti kode berikut:
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
getdi resource grup. - ORG_ID: ID organisasi Anda.
-
DEFAULT_ACCESS_LEVEL: Nama tingkat akses opsional, yang berbentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. GantiPOLICY_IDdengan ID kebijakan akses, danACCESS_LEVEL_NAMEdengan nama tingkat akses. -
DEFAULT_SESSION_LENGTH: Durasi sesi opsional menggunakan format durasi ISO 8601,
seperti
30muntuk 30 menit, atau2huntuk dua jam. -
DEFAULT_SESSION_REAUTH_METHOD: Metode opsional untuk menantang pengguna agar memverifikasi ulang
identitas mereka, yang harus berupa salah satu dari berikut ini:
LOGIN: Terapkan login standar, yang dapat mencakup MFA atau faktor lain yang ditentukan Workspace.PASSWORD: Hanya memerlukan sandi, meskipun faktor lain ditentukan. Jika sandi dikelola menggunakan IdP eksternal, pengguna akan dialihkan ke IdP. Jika sesi IdP aktif, pengguna akan diautentikasi ulang secara implisit. Jika IdP tidak aktif, pengguna harus login melalui IdP.SECURITY_KEY: Memerlukan kunci keamanan hardware.
API
Buat isi JSON:
{ "groupKey": "GROUP_ID", "accessLevels": [ "DEFAULT_ACCESS_LEVEL" ], // optional: "sessionSettings": { "sessionLength": "DEFAULT_SESSION_LENGTH", "sessionReauthMethod": "DEFAULT_SESSION_REAUTH_METHOD" } }Ganti kode berikut:
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
getdi resource grup. -
DEFAULT_ACCESS_LEVEL: Nama tingkat akses opsional, yang berbentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. GantiPOLICY_IDdengan ID kebijakan akses, danACCESS_LEVEL_NAMEdengan nama tingkat akses. -
DEFAULT_SESSION_LENGTH: Durasi sesi opsional menggunakan format durasi ISO 8601,
seperti
30muntuk 30 menit, atau2huntuk dua jam. -
DEFAULT_SESSION_REAUTH_METHOD: Metode opsional untuk menantang pengguna agar memverifikasi ulang
identitas mereka, yang harus berupa salah satu dari berikut ini:
LOGIN: Terapkan login standar, yang dapat mencakup MFA atau faktor lain yang ditentukan Workspace.PASSWORD: Hanya memerlukan sandi, meskipun faktor lain ditentukan. Jika sandi dikelola menggunakan IdP eksternal, pengguna akan dialihkan ke IdP. Jika sesi IdP aktif, pengguna akan diautentikasi ulang secara implisit. Jika IdP tidak aktif, pengguna harus login melalui IdP.SECURITY_KEY: Memerlukan kunci keamanan hardware.
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
Kirim permintaan POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindingsORG_ID Adalah ID untuk organisasi yang Anda gunakan untuk membuat peran Admin Pengikatan Akses Cloud. Jika properti
access-context-manager/organizationbelum ditetapkan, gantiORG_IDdalam tanda--organizationopsional dengan ID untuk organisasi yang Anda gunakan saat membuat peran Admin Pengikatan Akses Cloud.
Jika berhasil, Anda akan menerima representasi objek JSON. Jika ada masalah, Anda akan menerima pesan error.
Menentukan konfigurasi untuk aplikasi tertentu
Metode ini memungkinkan Anda menerapkan berbagai tingkat akses dan kontrol sesi ke aplikasi yang berbeda. Anda juga dapat menetapkan aturan default untuk aplikasi yang tidak memiliki konfigurasi tertentu.
Anda dapat menentukan aplikasi dalam binding akses menggunakan client ID OAuth-nya. Anda dapat menentukan aplikasi berikut menggunakan namanya:
- Google Cloud console
- Google Cloud SDK
- Google Auth Library. Jika Anda menggunakan Kredensial Default Aplikasi (ADC) yang dihasilkan oleh gcloud CLI dan Anda ingin menggunakan nama tersebut, Anda harus menggunakan client ID default yang ada di gcloud CLI. Anda tidak dapat memberikan file ID klien ke gcloud CLI.
- Firebase Console
Metode ini berguna jika Anda ingin melakukan hal berikut:
- Menerapkan kebijakan hanya pada aplikasi tertentu.
Buat kebijakan umum, tetapi kecualikan beberapa aplikasi dari kebijakan tersebut.
gcloud
Buat file binding dalam format YAML dengan daftar entri cakupan dalam daftar
scopedAccessSettings. Untuk setiap aplikasi yang ingin Anda petakan ke tingkat akses tertentu, sertakan entriclientScope.scopedAccessSettings: - scope: clientScope: restrictedClientApplication: clientId: CLIENT_ID activeSettings: accessLevels: - ACCESS_LEVEL_A sessionSettings: - sessionLength: SESSION_LENGTH sessionReauthMethod: SESSION_REAUTH_METHOD sessionLengthEnabled: true - scope: clientScope: restrictedClientApplication: # # because this app is specified by `name`, # it won't work with sessionSettings. # # if you add sessionSettings, make sure to # replace the `name` key with `clientId`, # and use the OAuth client ID as the value. # name: CLIENT_NAME activeSettings: accessLevels: - ACCESS_LEVEL_BGanti kode berikut:
- CLIENT_ID: ID klien OAuth. Anda harus menggunakan
clientIdsaat aplikasi berisisessionSettings. - ACCESS_LEVEL_A: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. - SESSION_LENGTH: Durasi sesi menggunakan format durasi ISO 8601, seperti
30muntuk 30 menit, atau2huntuk dua jam. SESSION_REAUTH_METHOD: Metode opsional untuk menantang pengguna agar memverifikasi ulang identitas mereka, yang harus berupa salah satu dari berikut ini:
LOGIN: Terapkan login standar, yang dapat mencakup MFA atau faktor lain yang ditentukan Workspace.PASSWORD: Hanya memerlukan sandi, meskipun faktor lain ditentukan. Jika sandi dikelola menggunakan IdP eksternal, pengguna akan dialihkan ke IdP. Jika sesi IdP aktif, pengguna akan diautentikasi ulang secara implisit. Jika IdP tidak aktif, pengguna harus login melalui IdP.SECURITY_KEY: Memerlukan kunci keamanan hardware.
CLIENT_NAME: Nama klien. Jika aplikasi berisi
sessionSettings, Anda tidak dapat menggunakan nama klien. Sebagai gantinya, gunakan ID klien OAuth.ACCESS_LEVEL_B: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
Untuk menetapkan tingkat akses default bagi aplikasi yang tidak ditentukan dalam file YAML, gunakan argumen
--level. File YAML hanya mendukung setelan khusus aplikasi (scopedAccessSettings).- CLIENT_ID: ID klien OAuth. Anda harus menggunakan
Buat binding akses.
gcloud access-context-manager cloud-bindings create --organization ORG_ID --group-key GROUP_ID --binding-file BINDING_FILE_PATH [ --level DEFAULT_ACCESS_LEVEL ] [ --session-length=DEFAULT_SESSION_LENGTH ] [ --session-reauth-method=DEFAULT_SESSION_REAUTH_METHOD ]Ganti kode berikut:
- ORG_ID: ID organisasi Anda.
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
getdi resource grup. -
BINDING_FILE_PATH: Jalur ke file YAML yang berisi skema binding akses.
File binding hanya mendukung
scopedAccessSettings. -
DEFAULT_ACCESS_LEVEL: Nama tingkat akses opsional, yang berbentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. GantiPOLICY_IDdengan ID kebijakan akses, danACCESS_LEVEL_NAMEdengan nama tingkat akses. -
DEFAULT_SESSION_LENGTH: Durasi sesi opsional menggunakan format durasi ISO 8601,
seperti
30muntuk 30 menit, atau2huntuk dua jam. -
DEFAULT_SESSION_REAUTH_METHOD: Metode opsional untuk menantang pengguna agar memverifikasi ulang
identitas mereka, yang harus berupa salah satu dari berikut ini:
LOGIN: Terapkan login standar, yang dapat mencakup MFA atau faktor lain yang ditentukan Workspace.PASSWORD: Hanya memerlukan sandi, meskipun faktor lain ditentukan. Jika sandi dikelola menggunakan IdP eksternal, pengguna akan dialihkan ke IdP. Jika sesi IdP aktif, pengguna akan diautentikasi ulang secara implisit. Jika IdP tidak aktif, pengguna harus login melalui IdP.SECURITY_KEY: Memerlukan kunci keamanan hardware.
Cara kerja argumen --level dan --binding-file
- Jika Anda hanya menggunakan
--binding-file, hanya aplikasi dalam file yang menerapkan kebijakan. - Jika Anda hanya menggunakan
--level, tingkat akses berlaku untuk semua aplikasi. - Jika Anda menggunakan keduanya, aturan akan digabungkan. Nilai
--levelberlaku untuk semua aplikasi, sedangkan kebijakan dalam file YAML yang ditentukan oleh--binding-filehanya berlaku untuk aplikasi sebagaimana ditentukan dalam file.
Bekerja dengan kontrol sesi
- Untuk menyetel kontrol sesi default untuk semua aplikasi, gunakan
--session-lengthdan--session-reauth-method. - Jika Anda juga menentukan kontrol sesi dalam file YAML, kontrol sesi tersebut akan menggantikan setelan default untuk aplikasi tertentu tersebut.
- Anda harus menggunakan
--session-lengthdan--session-reauth-methodbersama-sama.
API
Buat isi JSON:
{
"groupKey": "GROUP_ID",
//
// Optional; if specified, all applications that aren't defined in
// scopedAccessSettings have these access levels applied.
//
// If more than one access level is specified, the user is
// granted access if any one resolves to TRUE (OR logic, not AND).
//
// If you omit this key entirely, then no policy enforcement is
// applied by default.
//
"accessLevels": [
"DEFAULT_ACCESS_LEVEL"
],
"scopedAccessSettings": [
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"clientId": "CLIENT_ID"
}
}
},
"activeSettings": {
"accessLevels": [
"ACCESS_LEVEL_A"
],
"sessionSettings": [
{
"sessionLength": "SESSION_LENGTH",
"sessionReauthMethod": "SESSION_REAUTH_METHOD",
"sessionLengthEnabled": true
}
]
}
},
{
"scope": {
"clientScope": {
"restrictedClientApplication": {
"name": "CLIENT_NAME"
}
},
"activeSettings": {
"accessLevels": [
"ACCESS_LEVEL_B"
]
}
}
}
]
}
Ganti kode berikut:
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
getdi resource grup. -
DEFAULT_ACCESS_LEVEL: Nama tingkat akses opsional, yang berbentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. GantiPOLICY_IDdengan ID kebijakan akses, danACCESS_LEVEL_NAMEdengan nama tingkat akses. - CLIENT_ID: ID klien OAuth. Anda harus menggunakan
clientIdsaat aplikasi berisisessionSettings. - ACCESS_LEVEL_A: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. - SESSION_LENGTH: Durasi sesi menggunakan format durasi ISO 8601, seperti
30muntuk 30 menit, atau2huntuk dua jam. SESSION_REAUTH_METHOD: Metode opsional untuk menantang pengguna agar memverifikasi ulang identitas mereka, yang harus berupa salah satu dari berikut ini:
LOGIN: Terapkan login standar, yang dapat mencakup MFA atau faktor lain yang ditentukan Workspace.PASSWORD: Hanya memerlukan sandi, meskipun faktor lain ditentukan. Jika sandi dikelola menggunakan IdP eksternal, pengguna akan dialihkan ke IdP. Jika sesi IdP aktif, pengguna akan diautentikasi ulang secara implisit. Jika IdP tidak aktif, pengguna harus login melalui IdP.SECURITY_KEY: Memerlukan kunci keamanan hardware.
CLIENT_NAME: Nama klien. Jika aplikasi berisi
sessionSettings, Anda tidak dapat menggunakan nama klien. Sebagai gantinya, gunakan client ID OAuth.ACCESS_LEVEL_B: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
Kirim permintaan POST:
POST https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindings
ORG_ID adalah ID organisasi yang Anda gunakan untuk membuat peran
Admin Pengikatan Akses Cloud. Jika properti access-context-manager/organization belum ditetapkan,
ganti ORG_ID dalam tanda --organization opsional dengan ID untuk organisasi yang Anda gunakan saat membuat peran Admin Pengikatan Akses Cloud.
Jika berhasil, Anda akan menerima representasi objek JSON, atau pesan error jika ada masalah.
Menggunakan tingkat akses uji coba untuk menyimulasikan penegakan
Tingkat akses uji coba memungkinkan Anda menguji kebijakan akses tanpa benar-benar menerapkannya. Hal ini membantu Anda memahami dampak kebijakan sebelum kebijakan tersebut ditayangkan. Anda dapat melihat log uji coba untuk melihat apa yang akan terjadi jika kebijakan aktif.
Hanya tingkat akses yang dapat digunakan dalam mode uji coba. Kontrol sesi tidak tersedia dalam mode uji coba.
Membuat binding uji coba
Anda dapat menentukan tingkat akses uji coba bersama dengan tingkat akses reguler dalam binding yang sama, atau Anda dapat menggunakan binding terpisah untuk uji coba.
console
Di konsol Google Cloud , buka halaman Console & APIs Access Policy.
Jika diminta, pilih organisasi.
Klik Tambahkan kebijakan akses.
Pilih grup yang akan menerapkan kebijakan.
Untuk Pilih aplikasi yang mengakses Google Cloud, pilih aplikasi yang ingin Anda terapkan pembatasan ini.
Untuk aplikasi yang dipilih, konfigurasi tingkat akses uji coba menggunakan tingkat akses yang ada atau baru.
Klik Simpan.
gcloud
Konfigurasi setelan akses.
scopedAccessSettings: - scope: clientScope: restrictedClientApplication: name: CLIENT_NAME activeSettings: accessLevels: - ACCESS_LEVEL_A dryRunSettings: accessLevels: - DRY_RUN_ACCESS_LEVEL_1 - scope: clientScope: restrictedClientApplication: clientId: CLIENT_ID dryRunSettings: accessLevels: - DRY_RUN_ACCESS_LEVEL_2Ganti kode berikut:
- CLIENT_NAME: Nama klien. Jika aplikasi berisi
sessionSettings, Anda tidak dapat menggunakan nama klien. Sebagai gantinya, gunakan ID klien OAuth. - ACCESS_LEVEL_A: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. - DRY_RUN_ACCESS_LEVEL_1: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. - CLIENT_ID: ID klien OAuth. Anda harus menggunakan
clientIdsaat aplikasi berisisessionSettings. - DRY_RUN_ACCESS_LEVEL_2: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
- CLIENT_NAME: Nama klien. Jika aplikasi berisi
Buat binding akses.
gcloud access-context-manager cloud-bindings create --organization ORG_ID --group-key GROUP_ID --binding-file BINDING_FILE_PATH --dry-run-level DEFAULT_DRY_RUN_ACCESS_LEVELGanti kode berikut:
- ORG_ID: ID organisasi Anda.
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
getdi resource grup. -
BINDING_FILE_PATH: Jalur ke file YAML yang berisi skema binding akses.
File binding hanya mendukung
scopedAccessSettings. - DEFAULT_DRY_RUN_ACCESS_LEVEL_2: Nama tingkat akses opsional
dalam bentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
Sertakan tanda ini untuk menerapkan tingkat akses uji coba yang ditentukan ke semua aplikasi secara default jika tidak ditentukan dalam YAML.
API
Buat isi JSON:
{ "group_key": "GROUP_ID", // // Optional; if specified, all applications that aren't defined in // scopedAccessSettings have these access levels applied. // // If more than one access level is specified, the user is // granted access if any one resolves to TRUE (OR logic, not AND). // // If you omit this key entirely, then no policy enforcement is // be applied by default. // "access_levels": [ "DEFAULT_ACCESS_LEVEL" ], // // Optional; if specified, all applications that aren't defined in // scopedAccessSettings will have these dry run access levels applied. // "dry_run_access_levels": [ "DEFAULT_DRY_RUN_ACCESS_LEVEL" ], "scoped_access_settings": [ { "scope": { "client_scope": { "restricted_client_application": { "name": "CLIENT_NAME" } } }, "active_settings": { "access_levels": [ "ACCESS_LEVEL_A" ] }, "dry_run_settings": { "access_levels": [ "DRY_RUN_ACCESS_LEVEL_1" ] } }, { "scope": { "client_scope": { "restricted_client_application": { "client_id": "CLIENT_ID" } } }, "active_settings": { "access_levels": [ "DRY_RUN_ACCESS_LEVEL_2" ] } } ] }Ganti kode berikut:
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
getdi resource grup. -
DEFAULT_ACCESS_LEVEL: Nama tingkat akses opsional, yang berbentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. GantiPOLICY_IDdengan ID kebijakan akses, danACCESS_LEVEL_NAMEdengan nama tingkat akses. - DEFAULT_DRY_RUN_ACCESS_LEVEL: Nama tingkat akses opsional
dalam bentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. - CLIENT_NAME: Nama klien. Jika aplikasi berisi
sessionSettings, Anda tidak dapat menggunakan nama klien. Sebagai gantinya, gunakan ID klien OAuth. - ACCESS_LEVEL_A: Nama tingkat akses dalam format
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. - DRY_RUN_ACCESS_LEVEL_1: Nama tingkat akses dalam bentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME. - CLIENT_ID: ID klien OAuth. Anda harus menggunakan
client_idsaat aplikasi berisisessionSettings. - DRY_RUN_ACCESS_LEVEL_2: Nama tingkat akses dalam bentuk
accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
-
GROUP_ID: ID grup. Jika tidak memiliki ID grup, Anda dapat mengambilnya
dengan memanggil
metode
Kirim permintaan POST:
https://accesscontextmanager.googleapis.com/v1/organizations/ORG_ID/gcpUserAccessBindingsORG_ID Adalah ID untuk organisasi yang Anda gunakan untuk membuat peran Admin Pengikatan Akses Cloud. Jika properti
access-context-manager/organizationbelum ditetapkan, gantiORG_IDdalam tanda--organizationopsional dengan ID untuk organisasi yang Anda gunakan saat membuat peran Admin Pengikatan Akses Cloud.Jika berhasil, Anda akan menerima representasi objek JSON. Jika ada masalah, Anda akan menerima pesan error.
Melihat log uji coba
Setelah menyiapkan uji coba, Anda dapat memeriksa log untuk melihat upaya akses mana yang akan ditolak.
Tabel berikut mencantumkan kolom log yang dapat Anda gunakan untuk membuat dan menjalankan kueri guna mendapatkan log:
| Nama kolom | Deskripsi |
|---|---|
protoPayload.authenticationInfo.principalEmail |
ID email akun utama yang aksesnya ditolak. |
protoPayload.metadata.deniedApplications |
Nama aplikasi yang aksesnya ditolak. |
protoPayload.metadata.evaluationResult |
Hasil evaluasi kebijakan akses aktif. Kemungkinan nilai:
GRANTED atau DENIED. |
protoPayload.metadata.appliedAccessLevels |
Tingkat akses yang diterapkan yang diperlukan oleh kebijakan akses aktif. |
protoPayload.metadata.appliedDryRunAccessLevels |
Tingkat akses yang diterapkan yang diperlukan oleh kebijakan akses uji coba. |
protoPayload.metadata.dryRunEvaluationResult |
Hasil evaluasi kebijakan akses uji coba, yang menunjukkan
tindakan yang dimaksudkan saat kebijakan akses diterapkan.
Kemungkinan nilai:
GRANTED atau DENIED. |
Untuk mengetahui detail tentang cara membuat kueri untuk log, lihat Bahasa kueri logging.