Membuat tingkat akses kustom

Anda dapat menggunakan tingkat akses kustom di Access Context Manager untuk mengontrol akses ke Google Cloud resource menggunakan ekspresi boolean yang ditulis dalam subset Common Expression Language (CEL). Anda dapat mengevaluasi atribut permintaan—seperti project jaringan asal, alamat IP, identitas, dan data perangkat dari layanan keamanan pihak ketiga—untuk menerapkan persyaratan akses terperinci dan kontekstual.

Untuk menggunakan atribut perangkat dalam ekspresi tingkat akses kustom, Anda harus memiliki langganan berbayar. Untuk mengetahui detail tentang cara membuat ekspresi CEL, lihat spesifikasi tingkat akses kustom. Setelah membuat tingkat akses kustom, Anda dapat mengelolanya dengan cara yang sama seperti tingkat akses dasar.

Sebelum memulai

Membuat tingkat akses kustom

Anda dapat membuat tingkat akses kustom menggunakan konsol Google Cloud , alat command line gcloud, REST API, atau RPC.

Konsol

Untuk membuat tingkat akses kustom menggunakan konsol Google Cloud , lakukan hal berikut:

  1. Buka halaman Access Context Manager di konsol Google Cloud .

    Buka halaman Access Context Manager

  2. Jika diminta, pilih organisasi Anda.

  3. Di bagian atas halaman Access Context Manager, klik Baru.

  4. Di panel New Access Level:

    1. Di kotak Access level title, masukkan judul untuk tingkat akses. Judul harus berisi maksimal 50 karakter, diawali dengan huruf, dan hanya boleh berisi angka, huruf, garis bawah, dan spasi.

    2. Setelah Create Conditions in, pilih Mode lanjutan.

    3. Di bagian Kondisi, masukkan ekspresi untuk tingkat akses kustom Anda. Kondisi harus diselesaikan ke satu nilai boolean.

      Untuk mengetahui contoh dan informasi selengkapnya tentang dukungan Common Expression Language (CEL) dan tingkat akses kustom, lihat Spesifikasi tingkat akses kustom.

    4. Klik Simpan.

gcloud

Untuk membuat tingkat akses kustom menggunakan alat command line gcloud, gunakan perintah gcloud access-context-manager levels create.

gcloud access-context-manager levels create LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME

Ganti kode berikut:

  • LEVEL_NAME: nama unik untuk tingkat akses. Nama harus diawali dengan huruf dan hanya menyertakan huruf, angka, serta garis bawah. Nama dapat berisi maksimal 50 karakter.

  • TITLE: judul singkat yang dapat dibaca manusia untuk tingkat akses.

  • FILE: file YAML yang berisi ekspresi CEL Anda yang diformat sebagai satu pasangan nilai kunci: expression: "CEL_EXPRESSION".

    Untuk mengetahui contoh dan informasi selengkapnya tentang dukungan Common Expression Language (CEL) dan tingkat akses kustom, lihat Spesifikasi tingkat akses kustom.

  • DESCRIPTION: deskripsi tingkat akses yang dapat dibaca manusia.

  • POLICY_NAME: nama numerik kebijakan akses organisasi Anda.

Secara opsional, Anda dapat menyertakan salah satu tanda lebar gcloud.

File YAML custom-level-spec

Saat menggunakan alat command line gcloud untuk membuat tingkat akses kustom, Anda harus memberikan file YAML untuk opsi custom-level-spec. File YAML menentukan ekspresi CEL yang di-resolve menjadi satu nilai boolean. File YAML harus berisi satu pasangan nilai kunci yang diformat sebagai expression: "CEL_EXPRESSION". Nilai untuk expression harus berupa string.

Contoh file YAML

expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ['US'] || device.is_admin_approved_device)"

Contoh perintah

gcloud access-context-manager levels create Custom_Trust \
    --custom-level-spec=customspec.yaml \
    --description="Custom access level for corp." \
    --title="Custom Trust Level" \
    --policy=1521580097614100

REST

Untuk membuat tingkat akses kustom menggunakan REST API, gunakan metode accessPolicies.accessLevels.create.

Isi permintaan

Dalam isi permintaan untuk panggilan, sertakan instance objek AccessLevel.

{
  "name": string,
  "title": string,
  "description": string,
  "custom": {
    "expr": {
      "expression": string,
      "title": string,
      "description": string
    }
  }
}

Untuk kolom custom, buat objek yang menyertakan ekspresi CEL untuk tingkat akses kustom Anda. Ekspresi lengkap harus di-resolve ke nilai boolean. Kolom title dan description bersifat opsional.

Contoh

{
  "name": "example_custom_level",
  "title": "Example custom level",
  "description": "An example custom access level.",
  "custom":  {
    "expr": {
      "expression": "device.is_corp_owned == true || (device.os_type != OsType.OS_UNSPECIFIED && device.is_admin_approved_device == true)",
      "title": "Check for known devices",
      "description": "Permits requests from corp-owned devices and admin-approved devices with a known OS."
    }
  }
}

RPC

Untuk membuat tingkat akses kustom menggunakan RPC, panggil CreateAccessLevel.

Untuk kolom access_level, sertakan instance AccessLevel.

Kolom
name
Jenis string
Deskripsi

Wajib.

Nama resource untuk tingkat akses. POLICY_ID adalah nama numerik kebijakan akses organisasi Anda. SHORT_NAME harus diawali dengan huruf, dan hanya menyertakan huruf, angka, dan garis bawah.

Format:

            accessPolicies/policy_id/accessLevels/short_name
            
title
Jenis string
Deskripsi

Label yang dapat dibaca manusia untuk tingkat akses. Tingkat akses harus memiliki nama yang unik.

description
Jenis string
Deskripsi

Deskripsi tingkat akses.

custom
Jenis string
Deskripsi

Ekspresi CEL untuk tingkat akses kustom Anda. Ekspresi lengkap harus di-resolve ke nilai boolean.

Contoh tingkat akses kustom

Bagian ini memberikan contoh tingkat akses kustom.

Membatasi akses berdasarkan project sumber

Anda dapat membatasi akses ke resource agar hanya mengizinkan permintaan yang berasal dari project Google Cloud tertentu dan project tenant terkait. Pembatasan akses berbasis project berguna untuk mengamankan interaksi oleh workload identity, yang merupakan identitas non-manusia milik project Google Cloud . Workload Identity mencakup akun layanan, identitas gabungan Workload Identity Federation, Workload Identity terkelola, dan identitas agen.

Ekspresi berikut memberikan akses jika permintaan berasal dari projects/123456789:

originatesFromProjects(origin, ["projects/123456789"])

Membatasi akses Workload Identity ke project jaringan miliknya sendiri

Anda dapat membatasi workload identity sehingga hanya dapat membuat permintaan dari jaringan yang terkait dengan project Google Cloud yang memiliki workload identity. Project dapat berupa project level teratas atau project tenant dari project level teratas. Pembatasan akses berbasis project berguna untuk mengamankan interaksi workload identity. Tidak seperti originatesFromProjects, Anda tidak perlu menentukan nomor project dalam ekspresi, sehingga Anda dapat menggunakan kembali tingkat akses yang sama di beberapa project.

Ekspresi berikut memberikan akses jika project jaringan asal (atau project tenant terkait) cocok dengan project yang memiliki workload identity panggilan:

request.auth.matchesNetworkProject(origin)