Referensi atribut untuk IAM Conditions

Dokumen ini menjelaskan atribut yang didukung dalam ekspresi kondisi.

Atribut kondisi yang didukung

Bagian berikut merangkum atribut yang didukung dan menunjukkan layananTrusted Cloud by S3NS mana yang mengenali setiap atribut.

Atribut resource

Atribut berikut berhubungan dengan resource yang merupakan subjek permintaan.

Atribut Ringkasan penggunaan Layanan Trusted Cloud yang didukung
Atribut layanan resource

Kelola akses berdasarkan Trusted Cloud layanan yang digunakan.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
Atribut jenis resource

Kelola akses berdasarkan jenis resource.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager
Atribut nama resource

Kelola akses berdasarkan nama resource.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
Tag resource

Kelola akses berdasarkan tag yang dilampirkan ke resource.

Anda dapat menggunakan atribut ini di tempat berikut:

  • Binding peran kebijakan izin
  • Aturan penolakan kebijakan penolakan

Semua Trusted Cloud layanan (lihat Dukungan untuk kondisi yang diwariskan)

Untuk mengetahui detail selengkapnya tentang atribut resource, lihat Atribut resource pada halaman ini.

Atribut permintaan

Atribut berikut berkaitan dengan detail permintaan.

Atribut Ringkasan penggunaan Layanan Trusted Cloud yang didukung

Atribut API

Mengelola akses berdasarkan data yang disediakan oleh Trusted Cloud API atau layanan tertentu.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • Cloud Key Management Service
  • Cloud Storage
  • Compute Engine
  • Identity and Access Management
  • Resource Manager

Atribut tanggal/waktu

Tetapkan akses yang dapat berakhir, dijadwalkan, atau berdurasi terbatas ke resource Trusted Cloud .

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

Semua Trusted Cloud layanan (lihat Dukungan untuk kondisi yang diwariskan)

Atribut aturan penerusan

Tentukan jenis aturan penerusan yang dapat dibuat oleh akun utama. Misalnya, Anda dapat mengizinkan akun utama untuk membuat aturan penerusan untuk load balancer Trusted Cloud by S3NS internal, yang menangani traffic yang berasal dari dalam jaringan Trusted Cloud , tetapi tidak untuk load balancer Trusted Cloud eksternal, yang menangani traffic yang berasal dari internet.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

Untuk mengetahui detail selengkapnya tentang atribut permintaan, lihat Atribut permintaan di halaman ini.

Dukungan untuk kondisi turunan

Beberapa jenis Trusted Cloud resource tidak mengizinkan kondisi dalam kebijakan izinnya. Namun, Anda dapat menambahkan binding peran bersyarat di tingkat organisasi, folder, atau project, dan resource lainnya akan mewarisi binding peran tersebut melalui hierarki resource. Untuk mengetahui detailnya, lihat Jenis resource yang menerima binding peran bersyarat.

Saat Anda menggunakan atribut di level organisasi, folder, atau project, perlu diingat bahwa sebagian besar atribut hanya tersedia untuk jenis resource tertentu. Jika bagian dari kondisi menggunakan atribut yang tidak tersedia, maka bagian dari kondisi tersebut tidak pernah ditafsirkan sebagai pemberian akses. Misalnya, kondisi resource.name.endsWith == devResource tidak akan pernah memberikan akses ke resource IAM mana pun, karena resource IAM tidak menyediakan nama resource.

Untuk mencegah masalah ini, gunakan atribut jenis resource dan layanan resource yang dijelaskan di halaman ini untuk membatasi cakupan kondisi. Misalnya, kondisi berikut bernilai true untuk semua jenis resource selain instance Compute Engine; sebaliknya, untuk instance Compute Engine, kondisi akan memeriksa nama resource:

resource.type != 'compute.googleapis.com/Disk' ||
    resource.name.endsWith('devResource')

Anda tidak perlu membatasi cakupan kondisi yang memeriksa tag yang dilampirkan ke resource. Saat memeriksa nilai dan kunci tag, kondisi tidak dapat memeriksa atribut lainnya, termasuk jenis resource dan layanan resource.

Atribut resource

Layanan resource, jenis resource, dan atribut nama resource biasanya digunakan untuk mengubah cakupan pemberian akses yang disediakan oleh binding peran. Jika suatu peran berisi izin yang berlaku untuk atribut spesifik resource yang berbeda, kondisi berbasis resource dapat digunakan untuk memberikan subset izin peran bagi jenis tertentu atau layanan tertentu.

Atribut resource.service

Atribut resource.service memungkinkan Anda menetapkan kondisi berdasarkan layananTrusted Cloud yang digunakan. Misalnya, Anda dapat menetapkan kondisi yang membatasi akses pengguna ke resource yang menggunakan layanan cloudresourcemanager.googleapis.com. Untuk daftar nilai yang didukung, lihat Nilai layanan resource.

Anda dapat menggunakan atribut resource.service dalam binding peran kebijakan izin.

Variabel atribut resource.service
Jenis atribut

string

Untuk daftar nilai yang didukung, lihat Nilai layanan resource.

Operator yang didukung ,
Detail Saat Anda menggunakan atribut resource.type pada kondisi, periksa kesetaraan tepat () atau ketidaksetaraan persis () dengan atribut tersebut. Perbandingan lainnya, seperti memeriksa awalan atau akhiran, dapat memberi Anda hasil yang tidak terduga.
Contoh

Menampilkan true untuk resource Compute Engine:

resource.service == "compute.googleapis.com"
Layanan yang didukung
  • BigQuery
  • BigQuery Reservation API
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Google Kubernetes Engine
  • Resource Manager

atribut resource.type

Atribut resource.type memungkinkan Anda menetapkan kondisi berdasarkan jenis resource. Misalnya, Anda dapat menetapkan kondisi yang membatasi akses pengguna ke jenis resource storage.googleapis.com/Object. Untuk daftar nilai yang didukung, lihat Nilai jenis resource.

Jika kondisi Anda menggunakan atribut resource.name, sebaiknya gunakan atribut resource.type untuk mengontrol jenis resource yang diterapkan dengan kondisi tersebut. Untuk mengetahui detailnya, lihat atribut resource.name di halaman ini.

Anda dapat menggunakan atribut resource.type dalam binding peran kebijakan izin.

Variabel atribut resource.type
Jenis atribut

string

Untuk daftar nilai yang didukung, lihat Nilai jenis resource.

Operator yang didukung ,
Detail Saat Anda menggunakan atribut resource.type dalam kondisi, periksa kesetaraan tepat () atau ketidaksetaraan persis () dengan atribut tersebut. Perbandingan lainnya, seperti memeriksa awalan atau akhiran, dapat memberi Anda hasil yang tidak terduga.
Contoh

Menampilkan true kecuali jika resource adalah image Compute Engine:

resource.type != "compute.googleapis.com/Image"

Menampilkan true hanya jika resource adalah image Compute Engine atau persistent disk:

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Jenis resource yang didukung
BigQuery
  • Set data
  • Model
  • Rutinitas
  • Tabel
BigQuery Reservation API
  • Tugas
  • Reservasi BI
  • Komitmen kapasitas
  • Lokasi
  • Reservasi
Cloud Key Management Service
  • Versi Crypto Key
  • Kunci kripto
  • Key ring
  • Lokasi
Cloud Logging
  • Bucket log
  • Tampilan log
Cloud SQL
  • Cadangan yang dijalankan
  • Instance
Cloud Storage
  • Bucket
  • Folder terkelola
  • Objek
Compute Engine
  • Layanan backend (global dan regional)
  • Firewall
  • Aturan penerusan (global dan regional)
  • Image
  • Template instance
  • Instance
  • Persistent disk (regional dan zona)
  • Snapshot
  • Proxy HTTP(S) target (global dan regional)
  • Proxy SSL target
  • Proxy TCP target
Trusted Cloud by S3NS
  • Lokasi1
Google Kubernetes Engine
  • Cluster
Firestore
  • Database
Resource Manager
  • Project

1 Cloud Key Management Service menggunakan jenis resource ini sebagai induk dari resource key ring.

Atribut resource.name

Atribut resource.name memungkinkan Anda menetapkan kondisi berdasarkan semua atau sebagian dari nama resource. Untuk daftar format nama resource, lihat Format nama resource.

Atribut resource.name hanya tersedia untuk jenis resource tertentu, yang tercantum dalam tabel di bagian ini. Sebaiknya batasi penerapan kondisi ke jenis resource yang diinginkan. Jika peran berisi izin untuk jenis resource yang tidak menyediakan atribut resource.name, Anda harus memastikan bahwa izin tersebut tidak dibatasi oleh bagian kondisi yang memeriksa resource.name.

Contoh berikut menunjukkan cara memastikan perilaku ini. Dalam contoh ini, kondisi mengizinkan akses ke semua jenis resource kecuali bucket dan objek Cloud Storage. Sebaliknya, untuk bucket dan objek, kondisi hanya mengizinkan akses ke bucket example-bucket dan objek yang ada di dalamnya:

(resource.type != 'storage.googleapis.com/Bucket' &&
 resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')

Perhatikan bahwa bagian pertama kondisi memeriksa apakah resource bukan bucket ataupun objek. Jika resource memiliki jenis yang berbeda, seluruh kondisi akan bernilai true, terlepas dari nama resource-nya.

Selain itu, perhatikan bahwa kondisi memeriksa atribut resource.type, bukan atribut resource.service. Ada beberapa manfaat memeriksa atribut resource.type:

  • Fungsi ini membatasi pemeriksaan resource.name pada kumpulan resource yang sesuai. Misalnya, jika Anda ingin memberikan akses ke instance Compute Engine dengan nama tertentu, tidak ada salahnya untuk mengecualikan semua jenis resource selain instance Compute Engine.
  • Hal ini mencegah cakupan kondisi berubah jika layanan menambahkan jenis resource baru di masa mendatang.

Terakhir, perhatikan bahwa kondisi tersebut menggunakan fungsi startsWith() untuk mengevaluasi nama resource, bukan memeriksa kesetaraan dengan operator . Karena kondisi terlihat di awal nama resource, kondisi tersebut cocok dengan bucket serta objek dalam bucket tersebut. Jika memeriksa kesetaraan, bucket hanya akan cocok dengan bucket.

Anda tidak dapat menggunakan karakter pengganti seperti * untuk mencocokkan beberapa nama resource. Pertimbangkan alternatif berikut:

  • Gunakan fungsi extract() untuk mengekstrak nilai dari nama resource. Misalnya, Anda dapat mengekstrak project ID dari nama resource instance VM Compute Engine, lalu menulis ekspresi kondisi yang mengacu pada project ID tersebut.

    Untuk mengetahui detailnya, lihat Mengekstrak nilai dari atribut di halaman ini.

  • Gunakan fungsi startsWith() atau endsWith() untuk menulis kondisi yang mengevaluasi awal atau akhir nama resource.

Anda dapat menggunakan atribut resource.name dalam binding peran kebijakan izin.

Variabel atribut resource.name
Jenis atribut

string

Setiap jenis resource menggunakan format tertentu untuk nama resource. Untuk daftar format, lihat Format nama resource.

Fungsi dan operator yang didukung startsWith(), endsWith(), extract(), ,
Detail

resource.name berisi nama resource relatif untuk resource target dalam permintaan. Nama resource relatif adalah jalur URI tanpa garis miring ke depan (/).

Fungsi startsWith() menggunakan literal string awalan yang akan dievaluasi terhadap resource.name.

Fungsi endsWith() menggunakan literal string akhiran untuk dievaluasi terhadap resource.name.

Fungsi extract() menggunakan template ekstraksi untuk mengekstrak bagian dari resource.name. Untuk detailnya, lihat Mengekstrak nilai dari nama resource di halaman ini.

Operator dan adalah untuk perbandingan dengan seluruh resource.name, atau bagian yang diekstrak dari resource.name.

Contoh

Menampilkan true kecuali jika nama resource mengidentifikasi bucket Cloud Storage bernama secret-bucket-123:

resource.name != "projects/_/buckets/secret-bucket-123"

Menampilkantrue jika nama resource diawali dengan awalan yang ditentukan, dalam format yang digunakan oleh instance VM Compute Engine:

resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

Menampilkan true jika nama resource diawali dengan awalan yang ditentukan, dalam format yang digunakan oleh bucket Cloud Storage:

resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

Menampilkan true jika nama resource diakhiri dengan akhiran yang ditentukan—misalnya, ekstensi file objek Cloud Storage:

resource.name.endsWith(".jpg")

Menampilkan nama atau nomor project jika ada:

resource.name.extract("projects/{project}/")
Jenis resource yang didukung
BigQuery
  • Set data
  • Model
  • Rutinitas
  • Tabel
BigQuery Reservation API
  • Tugas
  • Reservasi BI
  • Komitmen kapasitas
  • Lokasi
  • Reservasi
Cloud Key Management Service
  • Kunci kripto
  • Versi Crypto Key
  • Key ring
Cloud Logging
  • Bucket log
  • Tampilan log
Cloud SQL
  • Cadangan yang dijalankan
  • Instance
Cloud Storage
  • Bucket
  • Folder terkelola
  • Objek
Compute Engine
  • Layanan backend (global dan regional)
  • Firewall
  • Aturan penerusan (global dan regional)
  • Image
  • Template instance
  • Instance
  • Persistent disk (regional dan zona)
  • Snapshot
  • Proxy HTTP(S) target (global dan regional)
  • Proxy SSL target
  • Proxy TCP target
Google Kubernetes Engine
  • Cluster

Tag resource

Fungsi tag resource memungkinkan Anda menetapkan kondisi berdasarkan tag yang dilampirkan ke resource yang didukung atau diwarisi oleh keturunan resource tersebut. Misalnya, Anda dapat menetapkan kondisi yang memberikan peran hanya untuk resource yang melampirkan tag env: prod. Untuk mempelajari lebih lanjut cara mengontrol akses dengan tag, lihat Tag dan kontrol akses.

Setiap tag terdiri dari kunci dan nilai. Ada beberapa jenis ID untuk setiap kunci dan nilai:

  • ID permanen, yang bersifat unik secara global dan tidak dapat digunakan kembali. Misalnya, kunci tag dapat memiliki ID permanen tagKeys/123456789012, dan nilai tag dapat memiliki ID permanen tagValues/567890123456.
  • Nama pendek. Nama pendek untuk setiap kunci harus unik dalam project atau organisasi tempat kunci ditentukan, dan nama pendek untuk setiap nilai harus unik untuk kunci yang terkait. Misalnya, kunci tag dapat memiliki nama pendek env, dan nilai tag dapat memiliki nama pendek prod.
  • Nama dengan namespace, yang menambahkan ID numerik organisasi atau ID project Anda ke nama pendek kunci tag. Misalnya, kunci tag yang dibuat untuk organisasi dapat memiliki nama dengan namespace 123456789012/env. Untuk mempelajari cara mendapatkan ID organisasi, lihat Mendapatkan ID resource organisasi Anda. Kunci tag yang dibuat untuk project dapat memiliki nama dengan namespace myproject/env. Untuk mempelajari cara mendapatkan project ID, lihat Mengidentifikasi project.

Untuk mendapatkan panduan dalam memilih jenis ID yang akan digunakan dalam kondisi Anda, lihat Definisi dan ID tag.

Anda dapat menggunakan kondisi berbasis tag untuk memberikan akses bersyarat ke resource apa pun. Hal ini mencakup resource dengan tagnya sendiri, serta resource yang mewarisi tag dari resource lain. Untuk mempelajari lebih lanjut cara tag diwariskan melalui hierarki resource, lihat Pewarisan tag.

Namun, area tertentu di konsol Trusted Cloud tidak mengenali binding peran kebijakan izin dengan kondisi berbasis tag. Akibatnya, jika Anda memiliki peran dengan kondisi berbasis tag, Trusted Cloud konsol mungkin secara keliru mencegah Anda melakukan tindakan tertentu. Jika Anda mengalami masalah ini, gunakan metode alternatif, seperti gcloud CLI, untuk melakukan tindakan.

Anda dapat menggunakan kondisi berbasis tag di:

  • Binding peran kebijakan izin
  • Aturan penolakan kebijakan penolakan

Anda dapat menggunakan fungsi berikut untuk menetapkan kondisi berdasarkan tag:

Fungsi Deskripsi
resource.hasTagKey(
  keyName: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci yang ditentukan. Kunci tag dicari berdasarkan nama namespace. Untuk memeriksa kunci tag menggunakan ID permanen, gunakan fungsi resource.hasTagKeyId().

Parameter
keyName: Nama kunci tag dengan namespace, dengan ID numerik organisasi dan garis miring ke depan sebagai awalan. Contoh , 123456789012/env.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci env:

resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci yang ditentukan. Kunci tag dicari berdasarkan ID permanen. Untuk memeriksa kunci tag menggunakan nama dengan namespace, gunakan fungsi resource.hasTagKey().

Parameter
keyId: ID permanen untuk kunci tag. Contoh, tagKeys/123456789012.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci tagKeys/123456789012:

resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci dan nilai yang ditentukan. Kunci dicari berdasarkan nama dengan namespace, dan nilainya dicari berdasarkan nama pendeknya. Untuk memeriksa nilai dan kunci tag menggunakan ID permanen, gunakan fungsi resource.matchTagId().

Parameter
  • keyName: Nama namespace untuk kunci tag, dengan numerik organisasi dan garis miring ke depan sebagai awalan. Contoh, 123456789012/env.
  • valueShortName: Nama pendek untuk nilai tag. Contoh, prod.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci 123456789012/env dan nilai prod:

resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci dan nilai yang ditentukan. Kunci dan nilai dicari berdasarkan ID permanen. Untuk memeriksa kunci tag menggunakan nama dengan namespace dan nilai menggunakan nama pendeknya, gunakan fungsi resource.matchTag().

Parameter
  • keyId: ID permanen untuk kunci tag. Contoh , tagKeys/123456789012.
  • valueId: ID permanen untuk nilai tag. Contoh , tagValues/567890123456.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci tagKeys/123456789012 dan nilai tagValues/567890123456:

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

Atribut permintaan

Atribut permintaan memungkinkan Anda membuat kondisi yang mengevaluasi detail tentang permintaan, seperti peran yang diubah oleh permintaan atau tanggal dan waktu permintaan.

Atribut API

Atribut API membantu Anda mengelola akses berdasarkan data yang disediakan oleh Trusted Cloud API atau layanan tertentu. Anda dapat menggunakan atribut API dalam binding peran kebijakan izin.

Untuk contoh kapan Anda mungkin perlu menggunakan atribut API dalam suatu kondisi, lihat halaman berikut:

  • Menetapkan batas pemberian peran
  • Tidak semua layanan mengenali atribut API. Bagian berikut menunjukkan layanan mana yang mengenali setiap atribut API.

    Fungsi untuk atribut API

    Anda dapat menggunakan fungsi berikut untuk menggunakan atribut API:

    Fungsi Deskripsi
    api.getAttribute(
      attributeName: string,
      defaultValue: V<T>
    )
      V<T>

    Mendapatkan atribut API yang diminta.

    Parameter
    • attributeName: Atribut API yang akan didapatkan. Untuk mengetahui nilai yang didukung, lihat Atribut Cloud Storage API dan Atribut IAM API di halaman ini.
    • defaultValue: Nilai default (V) yang akan digunakan jika atribut API tidak tersedia. Nilai V adalah jenis T, dengan T adalah jenis yang sama dengan nilai atribut API. Misalnya, jika nilai atribut API adalah string, Anda dapat menggunakan string kosong, atau string placeholder seperti undefined.

    Contoh

    Menampilkan salah satu dari berikut ini:

    • Untuk permintaan pemberian atau pencabutan peran, menampilkan daftar peran yang diubah oleh permintaan.
    • Untuk semua jenis permintaan lainnya, akan menampilkan daftar kosong.
    api.getAttribute("iam.googleapis.com/modifiedGrantsByRole", [])
    hasOnly(
      items: list<T>
    )
      bool

    Memeriksa apakah daftar hanya berisi item yang diizinkan, atau subset dari item tersebut. Anda dapat memanggil fungsi pada daftar yang ditampilkan oleh api.getAttribute().

    Parameter
    items: Daftar item dengan jenis T. Setiap item adalah nilai yang boleh dimuat oleh atribut API.
    Contoh

    Memeriksa apakah permintaan tersebut akan memberikan atau mencabut peran selain Pub/Sub Editor (roles/pubsub.editor) atau Pub/Sub Publisher (roles/pubsub.publisher):

    api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
        .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

    Berikut ini menunjukkan hasil untuk nilai permintaan yang berbeda:

    Peran yang diberikan/dicabut Hasil
    Tidak ada

    true

    Jika tidak ada peran yang diubah, maka api.getAttribute() akan menampilkan nilai default. Untuk atribut ini, nilai defaultnya selalu berupa daftar kosong. Menurut definisi, daftar kosong tidak berisi nilai yang tidak ada dalam daftar yang diizinkan.

    roles/pubsub.editor

    true

    Peran ada dalam daftar yang diizinkan.

    roles/pubsub.editor
    roles/pubsub.publisher

    true

    Kedua peran tersebut tercantum dalam daftar yang diizinkan.

    roles/billing.admin

    false

    Peran tidak ada dalam daftar yang diizinkan.

    roles/billing.admin
    roles/pubsub.editor

    false

    Satu peran tercantum dalam daftar yang diizinkan, tetapi peran lainnya tidak.

    Atribut IAM API

    IAM menyediakan atribut API berikut:

    Variabel atribut iam.googleapis.com/modifiedGrantsByRole
    Jenis atribut list<string>
    Detail

    Untuk permintaan menetapkan kebijakan izin resource, atribut ini berisi nama peran dari binding peran yang diubah oleh permintaan.

    Untuk jenis permintaan lainnya, atribut tidak ditentukan.

    Jenis resource yang menerima atribut ini

    Jenis resource berikut menerima kondisi dengan atribut modifiedGrantsByRole dalam kebijakan izinkan:

    • Project
    • Folder
    • Organisasi
    Layanan yang mengenali atribut ini

    Layanan berikut mengenali atribut modifiedGrantsByRole:

    • Cloud Key Management Service
    • Cloud Storage
    • Compute Engine
    • Identity and Access Management
    • Resource Manager

    Atribut tanggal/waktu

    Atribut tanggal/waktu digunakan untuk menetapkan akses yang dapat habis masa berlakunya, dijadwalkan, atau berdurasi terbatas ke resource Trusted Cloud . Anda dapat menggunakan atribut tanggal/waktu dalam pengikatan peran kebijakan izinkan.

    Atribut ini didukung untuk semua Trusted Cloud layanan dan jenis resource. Untuk mempelajari cara menerapkan kondisi tanggal/waktu ke resource yang tidak mendukungnya secara langsung, lihat Dukungan untuk kondisi yang diwariskan di halaman ini.

    Atribut request.time berisi stempel waktu untuk permintaan. Anda dapat membandingkan stempel waktu ini dengan stempel waktu lain, atau dengan durasi waktu.

    Bagian berikut mencantumkan fungsi yang dapat Anda gunakan untuk menetapkan kondisi berdasarkan stempel waktu dan durasi.

    Membuat, membandingkan, dan mengubah stempel waktu dan durasi

    Fungsi atau operator Deskripsi
    date(
      value: string
    )
      Timestamp

    Mengonversi tanggal dari string menjadi Timestamp.

    Parameter
    value: Tanggal dalam format YYYY-MM-DD, dengan YYYY adalah tahun, MM adalah bulan dengan dua digit, dan DD adalah hari dengan dua digit. yang dihasilkan Timestamp berisi tanggal dan waktu yang ditentukan 00:00:00.000 UTC.
    Contoh

    Membuat Timestamp yang mewakili tanggal 2023-02-01 dan waktu 00:00:00.000 UTC:

    date("2023-02-01")
    duration(
      value: string
    )
      Duration

    Mengonversi jumlah waktu daria string menjadi Duration.

    Parameter
    value: Duration dalam detik, diikuti oleh s.
    Contoh

    Membuat durasi yang mewakili 1,5 menit:

    duration("90s")

    Membuat durasi yang mewakili 30 hari:

    duration("2592000s")
    timestamp(
      value: string
    )
      Timestamp

    Mengonversi string menjadi Timestamp.

    Parameter

    value: Stempel waktu UTC yang mematuhi RFC 3339.

    Contoh

    Membuat stempel waktu yang mewakili 12 April 2023, pukul 23:20:50.52 dalam UTC:

    timestamp("2023-04-12T23:20:50.52Z")
    , , ,

    Membandingkan dua nilai Timestamp.

    Contoh

    Menampilkan true jika waktu permintaan adalah sebelum 12 April 2022, pukul 00.00.00 UTC:

    request.time < timestamp("2022-04-12T00:00:00.00Z")

    Menampilkan true jika waktu permintaan adala sebelum atau sama dengan 12 April 2022, pukul 00.00.00 UTC:

    request.time <= timestamp("2022-04-12T00:00:00.00Z")

    Menampilkan true jika waktu permintaan adalah setelah 12 April 2022, pukul 00.00.00 UTC:

    request.time > timestamp("2022-04-12T00:00:00.00Z")

    Menampilkan true jika waktu permintaan adalah setelah atau sama dengan 12 April 2022, pukul 00.00.00 UTC:

    request.time >= timestamp("2022-04-12T00:00:00.00Z")
    • timestamp + duration   Timestamp
    • timestamp - duration   Timestamp

    Tambahkan atau kurangi Duration dari Timestamp.

    Contoh

    Menampilkan Timestamp yang jatuh 30 menit setelah pukul 14.30.00 UTC pada 12-04-2024:

    timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

    Menampilkan Timestamp yang jatuh 60 hari sebelum pukul 14.30.00 UTC pada 12-04-2024:

    timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

    Mengekstrak informasi dari stempel waktu

    Fungsi di bagian ini memungkinkan Anda mengekstrak informasi dari stempel waktu, seperti hari dalam seminggu saat stempel waktu tersebut jatuh.

    Pada IAM Conditions, semua stempel waktu dalam UTC. Namun, Anda mungkin ingin mengekstrak informasi berdasarkan zona waktu yang berbeda. Misalnya, Anda mungkin ingin mengetahui apakah stempel waktu UTC jatuh pada hari Senin dalam zona waktu Berlin, Jerman.

    Untuk menentukan zona waktu lain, masukkan zona waktu ke dalam fungsi. Gunakan nama atau offset UTC dari Database Zona Waktu IETF. Misalnya, Anda dapat menggunakan Europe/Berlin atau +01:00 untuk Waktu Eropa Tengah (CET).

    Fungsi dan operator yang didukung Deskripsi
    Timestamp.getDate(
      timeZone: string
    )
      int

    Mendapatkan hari dalam sebulan dari Timestamp. Nilai ini menggunakan pengindeksan berbasis satu; hari pertama setiap bulan adalah 1.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim setelah tanggal 15 pada bulan tertentu dalam UTC:

    request.time.getDate() > 15
    Timestamp.getDayOfMonth(
      timeZone: string
    )
      int

    Mendapatkan hari dalam sebulan dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; hari pertama setiap bulan adalah 0.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim setelah tanggal 15 pada bulan tertentu dalam UTC:

    request.time.getDayOfMonth() > 14
    Timestamp.getDayOfWeek(
      timeZone: string
    )
      int

    Mendapatkan hari dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; misalnya, Minggu adalah 0.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim antara hari Senin dan Jumat di Berlin, Jerman:

    request.time.getDayOfWeek("Europe/Berlin") > 0 &&
        request.time.getDayOfWeek("Europe/Berlin") < 6
    Timestamp.getDayOfYear(
      timeZone: string
    )
      int

    Mendapatkan hari dalam setahun dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; hari pertama dalam setahun adalah 0.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim selama 5 hari pertama dalam setahun di Mountain View, California:

    request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
        request.time.getDayOfYear("America/Los_Angeles") < 5
    Timestamp.getFullYear(
      timeZone: string
    )
      int

    Mendapatkan tahun dari Timestamp.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim selama tahun 2023 di Mountain View, California:

    request.time.getFullYear("America/Los_Angeles") == 2023

    Menampilkan true jika permintaan dikirim selama tahun 2022 dalam UTC:

    request.time.getFullYear() == 2022
    Timestamp.getHours(
      timeZone: string
    )
      int

    Mendapatkan jam dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 23.

    Anda dapat menggabungkan fungsi ini dengan getDayofWeek() untuk memberikan akses hanya selama jam kerja yang diizinkan di wilayah hukum Anda.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim antara pukul 09.00 (09.00) dan 17.00 (17.00) pada hari kerja di Berlin, Jerman:

    request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
        request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
        request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getHours("Europe/Berlin") <= 17
    Timestamp.getMilliseconds(
      timeZone: string
    )
      int

    Mendapatkan jumlah milidetik dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 999.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Timestamp.getMinutes(
      timeZone: string
    )
      int

    Mendapatkan jumlah menit setelah satu jam dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 59.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim pada atau setelah pukul 09.30 (09.30) di Berlin, Jerman:

    request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getMinutes("Europe/Berlin") >= 30
    Timestamp.getMonth(
      timeZone: string
    )
      int

    Mendapatkan bulan dalam setahun dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 11.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    Contoh

    Menampilkan true jika permintaan dikirim selama bulan April di Mountain View, California:

    request.time.getMonth("America/Los_Angeles") == 3
    Timestamp.getSeconds(
      timeZone: string
    )
      int

    Mendapatkan jumlah detik dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 59.

    Parameter
    timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
    , , ,

    Membandingkan output dua fungsi dalam tabel ini.

    Atribut aturan penerusan

    Atribut aturan penerusan memungkinkan Anda menentukan jenis aturan penerusan yang dapat dibuat oleh akun utama. Misalnya, Anda dapat mengizinkan akun utama untuk membuat aturan penerusan untuk load balancer Trusted Cloud by S3NS internal, yang menangani traffic yang berasal dari dalam jaringan Trusted Cloud , tetapi tidak untuk load balancer Trusted Cloud eksternal, yang menangani traffic yang berasal dari internet. Anda dapat menggunakan atribut aturan penerusan dalam binding peran kebijakan izin.

    Untuk Cloud Load Balancing, atribut aturan penerusan tidak memengaruhi kemampuan untuk membuat komponen load balancer lain, seperti layanan backend, proxy target, health check, dan peta URL. Trusted Cloud

    Fungsi yang didukung

    Fungsi Deskripsi
    compute.isForwardingRuleCreationOperation()   bool

    Memeriksa apakah permintaan membuat aturan penerusan.

    Contoh
    Lihat contoh untuk compute.matchLoadBalancingSchemes().
    compute.matchLoadBalancingSchemes(
      schemes: list<string>
    )
      bool

    Memeriksa apakah permintaan memengaruhi salah satu jenis skema load balancing yang ditentukan. Guna menemukan ID untuk setiap skema load balancing, serta detail lebih lanjut, lihat Menggunakan IAM Conditions pada load balancer Trusted Cloud .

    Parameter
    schemes: Skema load balancing yang dapat dipengaruhi oleh permintaan.
    Contoh

    Menampilkan salah satu dari berikut ini:

    • Jika permintaan tidak membuat aturan penerusan, true akan ditampilkan.
    • Jika permintaan tersebut membuat aturan penerusan, menampilkan, menampilkan true hanya jika aturan penerusan memengaruhi INTERNAL, INTERNAL_MANAGED, atau INTERNAL_SELF_MANAGED skema load balancing.
    !compute.isForwardingRuleCreationOperation() || (
      compute.isForwardingRuleCreationOperation() &&
      compute.matchLoadBalancingSchemes([
        'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
      ])
    )

    Jenis resource yang didukung

    Atribut ini tersedia untuk permintaan pembuatan jenis resource berikut:

    Layanan Jenis resource
    Cloud Load Balancing Aturan penerusan
    Cloud VPN Aturan penerusan (global dan regional)
    Compute Engine Aturan penerusan (untuk penerusan protokol)
    Cloud Service Mesh1 Aturan penerusan

    1 Menggunakan atribut resource untuk Compute Engine.

    Mengekstrak nilai dari atribut

    Anda dapat menggunakan fungsi extract() untuk mengekstrak nilai dari atribut. Misalnya, Anda dapat mengekstrak bagian arbitrer dari nama resource, lalu tulis ekspresi kondisi yang merujuk pada teks yang Anda ekstrak.

    Untuk menggunakan fungsi extract(), berikan template ekstraksi, yang menentukan bagian atribut yang akan diekstrak. Misalnya, jika ingin mengekstrak project ID dari nama resource instance VM Compute Engine, Anda dapat menggunakan template projects/{project}/.

    Template ekstraksi berisi bagian berikut:

    • ID, diapit tanda kurung kurawal yang mengidentifikasi substring yang akan diekstrak.

      Pilih ID yang pendek dan juga bermakna yang memperjelas nilai yang ingin Anda ekstrak. Anda dapat menggunakan huruf besar dan kecil dari A hingga Z; digit numerik; dan garis bawah (_).

      Di template projects/{project}/, ID-nya adalah project.

    • Opsional: Awalan, yang harus muncul sebelum substring yang akan diekstrak.

      Pada template projects/{project}/, awalannya adalah projects/.

    • Opsional: Akhiran, yang harus muncul setelah substring yang akan diekstrak.

      Di template projects/{project}/, akhirannya adalah /.

    Fungsi extract() mengekstrak berbagai bagian atribut berdasarkan apakah template ekstraksi memiliki awalan, akhiran, atau keduanya:

    Memiliki awalan Memiliki akhiran Nilai yang diekstrak
    Seluruh atribut
    Karakter setelah kemunculan pertama dari awalan, atau string kosong jika tidak ada karakter setelah awalan
    Karakter sebelum kemunculan akhiran yang pertama, atau string kosong jika tidak ada karakter sebelum akhiran
    Karakter di antara kemunculan pertama dari awalan dan kemunculan akhiran berikutnya, atau string kosong jika tidak ada karakter di antara awalan dan akhiran

    Jika Anda menentukan awalan atau akhiran yang tidak muncul dalam atribut, atau jika akhiran hanya muncul sebelum awalan, fungsi extract() akan menampilkan string kosong.

    Contoh berikut menunjukkan output dari beberapa template ekstraksi yang berbeda. Contoh ini merujuk pada nama resource untuk objek Cloud Storage, projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876:

    Template ekstraksi Output
    /order_date={date}/ 2019-11-03
    buckets/{name}/ acme-orders-aaa
    /orders/{empty}order_date Kosongkan string
    {start}/objects/data_lake projects/_/buckets/acme-orders-aaa
    orders/{end} order_date=2019-11-03/aef87g87ae0876
    {all} projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
    /orders/{none}/order_date= Kosongkan string
    /orders/order_date=2019-11-03/{id}/data_lake Kosongkan string

    Jika mengekstrak string yang mewakili tanggal, Anda dapat menggunakan fungsi dan operator tanggal/waktu di halaman ini untuk mengonversi nilai yang diekstrak menjadi Timestamp. Misalnya, lihat Mengonfigurasi akses berbasis resource.