Mengonfigurasi akses sementara

Topik ini menjelaskan cara menetapkan akses sementara (yang akan berakhir) ke resource Google Cloud menggunakan binding peran bersyarat dalam kebijakan izin Anda. Dengan menggunakan atribut tanggal/waktu, Anda dapat menerapkan kontrol berbasis waktu saat mengakses resource tertentu. Contohnya, Anda dapat memberikan akses sementara ke project yang dimulai dan berhenti pada waktu tertentu atau secara terjadwal dan berulang.

Sebelum memulai

  • Baca Ringkasan Ketentuan untuk memahami dasar-dasar binding peran bersyarat Identity and Access Management (IAM).
  • Tinjau atribut tanggal/waktu yang dapat digunakan dalam ekspresi kondisi. Atribut tanggal/waktu dikenali oleh semua layanan Google Cloud.

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk mengelola binding peran bersyarat, minta administrator Anda untuk memberikan peran IAM berikut:

  • Untuk mengelola akses ke project: Admin IAM Project (roles/resourcemanager.projectIamAdmin) pada project
  • Untuk mengelola akses ke folder: Admin Folder (roles/resourcemanager.folderAdmin) pada folder
  • Untuk mengelola akses ke project, folder, dan organisasi: Admin Organisasi (roles/resourcemanager.organizationAdmin) pada organisasi
  • Untuk mengelola akses ke hampir semua resource Google Cloud: Admin Keamanan (roles/iam.securityAdmin) pada project, folder, atau organisasi yang resource-nya ingin Anda kelola aksesnya

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

Peran bawaan ini berisi izin yang diperlukan untuk mengelola binding peran bersyarat. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk mengelola binding peran bersyarat:

  • Untuk mengelola akses ke project:
    • resourcemanager.projects.getIamPolicy pada project
    • resourcemanager.projects.setIamPolicy pada project
  • Untuk mengelola akses ke folder:
    • resourcemanager.folders.getIamPolicy pada folder
    • resourcemanager.folders.setIamPolicy pada folder
  • Untuk mengelola akses ke organisasi:
    • resourcemanager.organizations.getIamPolicy di organisasi
    • resourcemanager.organizations.setIamPolicy di organisasi

Anda mungkin juga dapat memperoleh izin ini dengan peran khusus atau peran bawaan lainnya.

Memberikan akses sementara

Binding peran bersyarat dapat digunakan untuk memberikan akses berbatas waktu ke resource, sehingga memastikan pengguna tidak dapat lagi mengakses resource tersebut setelah tanggal dan waktu yang ditentukan berakhir.

Pertimbangkan skenario berikut: aturan keamanan informasi perusahaan ExampleCo menekankan bahwa tidak boleh ada karyawan yang memiliki akses tanpa batas ke resource dalam project produksi. Sebelumnya, admin telah menyetel dan menghapus binding peran IAM secara manual untuk memenuhi kebutuhan darurat engineer. Untuk mengurangi overhead administratif, ExampleCo dapat mengonfigurasi binding peran bersyarat dengan kondisi tanggal/waktu untuk menetapkan tanggal akhir binding.

Untuk memberikan akses yang dapat habis masa berlakunya ke resource project:

Konsol

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka halaman IAM

  2. Dari daftar akun utama, temukan akun utama yang diinginkan, lalu klik tombol .

  3. Dari panel Edit izin, temukan peran yang diinginkan untuk mengonfigurasi kondisinya. Kemudian, di bagian Kondisi IAM (opsional), klik Tambahkan kondisi IAM.

  4. Di panel Edit kondisi, masukkan judul dan deskripsi opsional untuk kondisi tersebut.

  5. Anda dapat menambahkan ekspresi kondisi menggunakan Pembuat Kondisi atau Editor Kondisi. Pembuat kondisi menyediakan antarmuka interaktif untuk memilih jenis kondisi, operator, dan detail lain yang berlaku terkait ekspresi yang Anda inginkan. Editor kondisi menyediakan antarmuka berbasis teks untuk memasukkan ekspresi secara manual menggunakan sintaksis CEL.

    Pembuat Kondisi:

    1. Dari drop-down Jenis kondisi, pilih Akses Non-Permanen.
    2. Dari drop-down Operator, pilih berdasarkan.
    3. Dari drop-down Waktu, klik tombol untuk memilih dari rentang tanggal dan waktu.
    4. Klik Simpan untuk menerapkan kondisi.
    5. Setelah panel Edit kondisi ditutup, klik Simpan lagi dari panel Edit izin untuk memperbarui kebijakan izin Anda.

    Editor Kondisi:

    1. Klik tab Editor Kondisi, lalu masukkan ekspresi berikut (mengganti stempel waktu dengan stempel waktu Anda sendiri):

      request.time < timestamp("2020-07-01T00:00:00.000Z")
    2. Setelah memasukkan ekspresi Anda, Anda dapat secara opsional memilih untuk memvalidasi sintaksis CEL dengan mengklik Jalankan Linter di atas kotak teks di kanan atas.

    3. Klik Simpan untuk menerapkan kondisi.

    4. Setelah panel Edit kondisi ditutup, klik Simpan lagi dari panel Edit izin untuk memperbarui kebijakan izin Anda.

gcloud

Kebijakan izin ditetapkan menggunakan pola baca-ubah-tulis.

Jalankan perintah gcloud projects get-iam-policy guna mendapatkan kebijakan izin saat ini untuk project. Dalam contoh berikut, versi JSON dari kebijakan izin didownload ke jalur pada disk.

Perintah:

gcloud projects get-iam-policy project-id --format=json > filepath

Format JSON dari kebijakan izin didownload:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:travis@example.com"
      ],
      "role": "roles/iam.securityReviewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

Untuk mengonfigurasi kebijakan izin dengan akses yang dapat habis masa berlakunya, menambahkan ekspresi kondisi yang ditandai berikut (mengganti stempel waktu dengan stempel waktu Anda sendiri). gcloud CLI memperbarui versi secara otomatis:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:travis@example.com"
      ],
      "role": "roles/iam.securityReviewer",
      "condition": {
        "title": "Expires_July_1_2020",
        "description": "Expires on July 1, 2020",
        "expression":
          "request.time < timestamp('2020-07-01T00:00:00.000Z')"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Selanjutnya, tetapkan kebijakan izin baru dengan menjalankan perintah gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id filepath

Kebijakan izin baru diterapkan, dan pemberian peran travis@example.com akan berakhir pada waktu yang ditentukan.

REST

Gunakan pola baca-ubah-tulis untuk mengizinkan akses hingga waktu tertentu.

Pertama, baca kebijakan izin untuk project:

Metode projects.getIamPolicy Resource Manager API mendapatkan kebijakan izin project.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Google Cloud Anda Project ID adalah string alfanumerik, seperti my-project.
  • POLICY_VERSION: Versi kebijakan yang akan ditampilkan Permintaan harus menentukan versi kebijakan terbaru, yaitu kebijakan versi 3. Lihat Menentukan versi kebijakan saat mendapatkan kebijakan untuk detailnya.

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Meminta isi JSON:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON seperti berikut:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "members": [
        "user:travis@example.com"
      ]
    }
  ]
}

Selanjutnya, ubah kebijakan izin agar mengizinkan akses hingga waktu tertentu. Pastikan untuk mengubah kolom version menjadi nilai 3:

{
  "version": 3,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/iam.securityReviewer",
      "members": [
        "user:travis@example.com"
      ],
      "condition": {
        "title": "Expires_July_1_2020",
        "description": "Expires on July 1, 2020",
        "expression":
          "request.time < timestamp('2020-07-01T00:00:00.000Z')"
      }
    }
  ]
}

Terakhir, tulis kebijakan izin yang telah diperbarui:

Metode projects.setIamPolicy Resource Manager API menetapkan kebijakan izin dalam permintaan sebagai kebijakan izin baru project.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Google Cloud Anda Project ID adalah string alfanumerik, seperti my-project.

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Meminta isi JSON:

{
  "policy": {
    "version": 3,
    "etag": "BwWKmjvelug=",
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:project-owner@example.com"
        ]
      },
      {
        "role": "roles/iam.securityReviewer",
        "members": [
          "user:travis@example.com"
        ],
        "condition": {
          "title": "Expires_July_1_2020",
          "description": "Expires on July 1, 2020",
          "expression":
            "request.time < timestamp('2020-07-01T00:00:00.000Z')"
        }
      }
    ]
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Respons berisi kebijakan izin yang telah diperbarui.


Mengelola akses berdasarkan hari/jam

Binding peran bersyarat dapat digunakan untuk memberikan akses ke resource hanya dalam hari atau jam tertentu secara berulang.

Pertimbangkan skenario berikut: perusahaan ExampleCo memiliki project jaminan mutu. Seluruh tim QA harus memiliki peran dengan hak istimewa tinggi untuk menyelesaikan pekerjaan mereka. ExampleCo harus mematuhi undang-undang ketenagakerjaan di lokasi mereka, yang membatasi jam kerja menjadi Senin hingga Jumat dari pukul 9 pagi hingga 5 sore. ExampleCo dapat menggunakan kondisi tanggal/waktu untuk memastikan bahwa karyawan mereka hanya dapat mengakses Google Cloud selama hari kerja dan selama jam kerja yang dijadwalkan.

Untuk memberikan akses ke resource project hanya untuk hari atau jam tertentu secara berulang:

Konsol

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka halaman IAM

  2. Dari daftar akun utama, temukan akun utama yang diinginkan, lalu klik tombol .

  3. Dari panel Edit izin, temukan peran yang diinginkan untuk mengonfigurasi kondisinya. Kemudian, di bagian Kondisi IAM (opsional), klik Tambahkan kondisi IAM.

  4. Di panel Edit kondisi, masukkan judul dan deskripsi opsional untuk condition.

  5. Anda dapat menambahkan ekspresi kondisi menggunakan Pembuat Kondisi atau Editor Kondisi. Pembuat kondisi menyediakan antarmuka interaktif untuk memilih jenis kondisi, operator, dan detail lain yang berlaku terkait ekspresi yang Anda inginkan. Editor kondisi menyediakan antarmuka berbasis teks untuk memasukkan ekspresi secara manual menggunakan sintaksis CEL.

    Pembuat Kondisi:

    1. Klik Tambahkan.
    2. Dari drop-down Jenis kondisi, pilih Waktu Jadwal Hari.
    3. Dari drop-down Operator, pilih Setelah atau Pada.
    4. Dari drop-down Hari, pilih Senin.
    5. Dari drop-down Pilih zona waktu, pilih zona waktu yang diinginkan dari daftar.
    6. Pastikan operator And dipilih di sebelah kiri, lalu klik Tambahkan lagi.
    7. Dari drop-down Jenis kondisi, pilih Waktu Jadwal Hari.
    8. Dari drop-down Operator, pilih Sebelum atau Pada.
    9. Dari drop-down Hari, pilih Jumat.
    10. Dari drop-down Pilih zona waktu, pilih zona waktu yang diinginkan dari daftar.

    Pada tahap ini, Anda telah mengonfigurasi akses hanya pada hari Senin sampai Jumat. Sekarang, Anda akan mengkonfigurasi akses dari pukul 9 pagi (09.00) hingga 5 sore (17.00).

    1. Pastikan operator And dipilih di sebelah kiri, lalu klik Tambahkan lagi.
    2. Dari drop-down Jenis kondisi, pilih Waktu Jadwal Jam.

      1. Dari drop-down Operator, pilih Setelah atau Pada.
      2. Dari drop-down Jam, pilih 9 (09.00).
      3. Dari drop-down Pilih zona waktu, pilih zona waktu yang diinginkan dari daftar.
      4. Dari drop-down Jenis kondisi, pilih Waktu Jadwal Jam.
      5. Dari drop-down Operator, pilih Sebelum atau Pada. Perlu diperhatikan bahwa untuk pilihan ini, "pada" secara logis akan mengevaluasi ke semua waktu antara pukul 17.00 (5 sore) dan 17.59 (5.59 sore). Untuk menyetel akses agar berakhir pada 4.59 sore, pastikan jam disetel ke 16, bukan 17.
      6. Dari drop-down Jam, pilih 17 (5 sore).
      7. Dari drop-down Pilih zona waktu, pilih zona waktu yang diinginkan dari daftar.
      8. Klik Simpan untuk menerapkan kondisi.
      9. Setelah panel Edit kondisi ditutup, klik Simpan lagi dari panel Edit izin untuk memperbarui kebijakan izin Anda.

      Sekarang Anda telah mengonfigurasi akses dari Senin sampai Jumat, pukul 9 pagi hingga 5 sore.

      Editor Kondisi:

      1. Klik tab Editor Kondisi, lalu masukkan ekspresi berikut (mengganti nilai placeholder dengan nilai placeholder Anda sendiri):

        request.time.getHours("Europe/Berlin") >= 9 &&
        request.time.getHours("Europe/Berlin") <= 17 &&
        request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
        request.time.getDayOfWeek("Europe/Berlin") <= 5
        
      2. Setelah memasukkan ekspresi Anda, Anda dapat secara opsional memilih untuk memvalidasi sintaksis CEL dengan mengklik Jalankan Linter di atas kotak teks di kanan atas.

      3. Klik Simpan untuk menerapkan kondisi.

      4. Setelah panel Edit kondisi ditutup, klik Simpan lagi dari panel Edit izin untuk memperbarui kebijakan izin Anda.

gcloud

Kebijakan izin ditetapkan menggunakan pola baca-ubah-tulis.

Jalankan perintah gcloud projects get-iam-policy guna mendapatkan kebijakan izin saat ini untuk project. Dalam contoh berikut, versi JSON dari kebijakan izin didownload ke jalur pada disk.

Perintah:

gcloud projects get-iam-policy project-id --format=json > filepath

Format JSON dari kebijakan izin didownload:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:rita@example.com"
      ],
      "role": "roles/bigquery.dataViewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

Untuk mengonfigurasi kebijakan izin dengan akses terjadwal, menambahkan ekspresi kondisi yang ditandai berikut (mengganti stempel waktu dengan stempel waktu Anda sendiri). gcloud CLI memperbarui versi secara otomatis:

{
  "bindings": [
    {
      "members": [
        "user:project-owner@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "user:rita@example.com"
      ],
      "role": "roles/bigquery.dataViewer",
      "condition": {
        "title": "Business_hours",
        "description": "Business hours Monday-Friday",
        "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
      }
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 3
}

Selanjutnya, tetapkan kebijakan izin baru dengan menjalankan perintah gcloud projects set-iam-policy:

gcloud projects set-iam-policy project-id filepath

kebijakan izin baru diterapkan, dan pemberian peran rita@example.com akan mengizinkan akses antara hari dan waktu yang ditentukan.

REST

Menggunakan pola baca-ubah-tulis untuk mengizinkan akses terjadwal.

Pertama, baca kebijakan izin untuk project:

Metode projects.getIamPolicy Resource Manager API mendapatkan kebijakan izin project.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Google Cloud Anda Project ID adalah string alfanumerik, seperti my-project.
  • POLICY_VERSION: Versi kebijakan yang akan ditampilkan Permintaan harus menentukan versi kebijakan terbaru, yaitu kebijakan versi 3. Lihat Menentukan versi kebijakan saat mendapatkan kebijakan untuk detailnya.

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy

Meminta isi JSON:

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON seperti berikut:

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "user:rita@example.com"
      ]
    }
  ]
}

Selanjutnya, ubah kebijakan izin untuk mengizinkan akses terjadwal.

Tambahkan ekspresi kondisi yang ditandai berikut (mengganti stempel waktu dengan stempel waktu Anda sendiri). Pastikan Anda telah memperbarui nilai version menjadi 3:

{
  "etag": "BwWKmjvelug=",
  "version": 3,
  "bindings": [
    {
      "role": "roles/owner",
      "members": [
        "user:project-owner@example.com"
      ]
    },
    {
      "role": "roles/bigquery.dataViewer",
      "members": [
        "user:rita@example.com"
      ],
      "condition": {
        "title": "Business_hours",
        "description": "Business hours Monday-Friday",
        "expression":
          "request.time.getHours('Europe/Berlin') >= 9 &&
          request.time.getHours('Europe/Berlin') <= 17 &&
          request.time.getDayOfWeek('Europe/Berlin') >= 1 &&
          request.time.getDayOfWeek('Europe/Berlin') <= 5"
      }
    }
  ]
}

Metode projects.setIamPolicy Resource Manager API menetapkan kebijakan izin dalam permintaan sebagai kebijakan izin baru project.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Google Cloud Anda Project ID adalah string alfanumerik, seperti my-project.

Metode HTTP dan URL:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy

Meminta isi JSON:

{
  "policy": {
    "etag": "BwWKmjvelug=",
    "version": 3,
    "bindings": [
      {
        "role": "roles/owner",
        "members": [
          "user:project-owner@example.com"
        ]
      },
      {
        "role": "roles/bigquery.dataViewer",
        "members": [
          "user:rita@example.com"
        ],
        "condition": {
          "title": "Business_hours",
          "description": "Business hours Monday-Friday",
          "expression": "request.time.getHours('Europe/Berlin') >= 9 && request.time.getHours('Europe/Berlin') <= 17 && request.time.getDayOfWeek('Europe/Berlin') >= 1 && request.time.getDayOfWeek('Europe/Berlin') <= 5"
        }
      }
    ]
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Respons berisi kebijakan izin yang telah diperbarui.


Langkah selanjutnya