Tutorial: Mengelola kontrol kebijakan
Tutorial ini menunjukkan cara menerapkan kontrol kebijakan pada resource Certificate Authority Service.
Tujuan
Tutorial ini memberikan informasi tentang cara mengonfigurasi kumpulan certificate authority (CA) bersama untuk penerbitan sertifikat DNS dengan kontrol kebijakan berikut:
- Pengguna
prod-dns-requester
dapat meminta sertifikat TLS server entitas akhir untuk domain*.prod.example.com
. - Pengguna
test-dns-requester
dapat meminta sertifikat TLS server entitas akhir untuk domain*.test.example.com
. - Pengguna
blank-check-requester
dapat meminta jenis sertifikat apa pun dari kumpulan CA.
Tutorial ini menggunakan kebijakan penerbitan sertifikat dari kumpulan CA, template sertifikat, dan binding IAM bersyarat untuk mencapai skenario ini.
Sebelum memulai
- Baca berbagai kontrol kebijakan yang ditawarkan oleh CA Service.
- Baca cara membuat template sertifikat.
- Baca tentang profil sertifikat yang dapat Anda gunakan untuk berbagai skenario penerbitan sertifikat.
- Baca cara menggunakan Common Expression Language (CEL) untuk menerapkan berbagai kontrol kebijakan untuk penerbitan sertifikat.
- Baca cara menggunakan kebijakan penerbitan sertifikat.
- Baca cara mengonfigurasi, mengubah, dan menghapus kebijakan IAM untuk membuat dan mengelola resource CA Service.
Membuat kumpulan CA
Untuk membuat kumpulan CA, gunakan petunjuk berikut:
Untuk membuat kumpulan CA yang menggunakan file
issuance-policy.yaml
, gunakan perintahgcloud
berikut:gcloud
gcloud privateca pools create POOL_NAME \ --tier=ENTERPRISE
Dengan keterangan:
- Flag
--tier
digunakan untuk menentukan tingkat kumpulan CA. Untuk mengetahui informasi selengkapnya tentang tingkat, lihat Memilih tingkat operasi.
- Flag
Untuk membuat CA dengan resource yang dikelola Google dalam kumpulan CA yang baru dibuat, gunakan perintah
gcloud
berikut:gcloud
gcloud privateca roots create CA_NAME \ --pool=POOL_NAME \ --subject="CN=Example DNS Root, O=Example LLC, C=US" \ --validity="10Y" \ --max-chain-length=1 \ --auto-enable
Dengan keterangan:
- POOL_NAME adalah ID unik dari kumpulan CA.
- Flag
--subject
digunakan untuk meneruskan nama subjek sertifikat. - Tanda
--validity
menentukan periode validitas CA. Masa berlaku default adalah 10 tahun. - Tanda
--max-chain-length
menentukan kedalaman maksimum CA subordinat yang diizinkan berdasarkan CA. - Flag
--auto-enable
membuat CA dalam statusENABLED
, bukan dalam statusSTAGED
. Untuk informasi selengkapnya tentang status CA, lihat negara bagian CA.
Mengonfigurasi kontrol kebijakan untuk sertifikat pengujian
Perubahan kebijakan penerbitan akan segera berlaku. Sebaiknya konfigurasikan kontrol kebijakan pengujian sebelum menggunakannya untuk produksi. Bagian ini menjelaskan cara mengonfigurasi kontrol kebijakan pengujian.
Untuk template DNS pengujian dan produksi, Anda harus menggunakan nilai standar yang sama untuk sertifikat TLS server. Buat file YAML leaf_server_tls_predefined_values.yaml
, lalu salin konfigurasi TLS server entitas akhir berikut ke dalam file.
keyUsage:
baseKeyUsage:
digitalSignature: true
keyEncipherment: true
extendedKeyUsage:
serverAuth: true
caOptions:
isCa: false
Mengonfigurasi kontrol kebijakan untuk sertifikat DNS pengujian
Bagian ini menjelaskan cara menetapkan kontrol kebijakan untuk mengizinkan pengguna test-dns-requester
meminta sertifikat TLS server entitas akhir untuk DNS di domain *.test.example.com
.
Membuat template sertifikat DNS untuk sertifikat pengujian
Bagian ini menjelaskan cara membuat template sertifikat yang berisi konfigurasi TLS server entitas akhir. Template sertifikat ini membatasi sertifikat untuk hanya menggunakan SAN DNS di domain *.test.example.com
. Pembatasan ini diterapkan menggunakan ekspresi Common Expression Language (CEL). Template sertifikat juga menghapus subjek apa pun yang ditentukan dalam permintaan sertifikat.
Gunakan perintah
gcloud
berikut untuk membuat template sertifikat yang berisi ekstensi TLS server entitas akhir, menghapussubject
yang ditentukan dalam permintaan sertifikat, dan membatasi SAN yang diizinkan.gcloud
gcloud privateca templates create test-server-tls-template \ --predefined-values-file ./leaf_server_tls_predefined_values.yaml \ --no-copy-subject \ --copy-sans \ --identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.test.example.com'))"
Dengan keterangan:
- Flag
--predefined-values-file
digunakan untuk meneruskan file YAML yang mendeskripsikan nilai X.509 standar yang ditetapkan oleh template sertifikat. - Tanda
--no-copy-subject
menghapus semua subjek yang ditentukan penelepon dari permintaan sertifikat. - Tanda
--copy sans
memastikan bahwa ekstensi SAN dari permintaan sertifikat disalin ke dalam sertifikat yang ditandatangani. - Flag
--identity-cel-expression
digunakan untuk meneruskan ekspresi CEL yang dievaluasi terhadap identitas dalam sertifikat sebelum diterbitkan. Untuk mengetahui informasi selengkapnya tentang cara menggunakan ekspresi CEL untuk menerapkan berbagai kontrol kebijakan, lihat Menggunakan CEL.
Untuk informasi selengkapnya tentang cara membuat template sertifikat, lihat Membuat template sertifikat.
- Flag
Membuat binding IAM untuk sertifikat pengujian DNS
Agar pengguna test-dns-requester@
dalam kumpulan CA DNS dapat meminta sertifikat TLS server pengujian, buat binding IAM bersyarat pada kumpulan CA. Berikan peran privateca.certificateRequester
kepada pengguna test-dns-requester@
hanya jika permintaan sertifikat berisi referensi ke template test-server-tls-template
. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM.
Buat file YAML kebijakan
test_dns_condition.yaml
, lalu salin konfigurasi TLS berikut ke dalam file.title: test DNS binding description: allows user to only create DNS test certificates expression: api.getAttribute("privateca.googleapis.com/template", "") == "PROJECT_ID/-/test-server-tls-template"
Nama template yang diberikan dalam kondisi IAM harus cocok dengan nama template dalam permintaan sertifikat. Jadi, jika memberikan project ID dalam atribut
privateca.googleapis.com/template
dari ekspresi CEL, Anda juga harus memberikan project ID saat meminta sertifikat. Jika memberikan nomor project dalam ekspresi CEL, Anda juga harus memberikan nomor project dalam permintaan sertifikat.Gunakan perintah
gcloud
berikut untuk menambahkan kontrol kebijakan yang mengizinkantest-dns-requester@
hanya meminta sertifikat TLS pengujian produksi dari kumpulan CA.gcloud
gcloud privateca pools add-iam-policy-binding POOL_NAME \ --role='roles/privateca.certificateRequester' \ --member='user:test-dns-requester@' \ --condition-from-file=./test_dns_condition.yaml
Dengan keterangan:
- Tanda
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan kepada anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahi binding. - Flag
condition-from-file
digunakan untuk meneruskan nama file dengan kondisi CEL.
- Tanda
Gunakan
gcloud
berikut untuk menambahkan kontrol kebijakan yang mengizinkantest-dns-requester@
menggunakan template sertifikat 'test-server-tls-template'.gcloud
gcloud privateca templates add-iam-policy-binding test-server-tls-template \ --role='roles/privateca.templateUser' \ --member='user:test-dns-requester@'
Dengan keterangan:
- Tanda
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan kepada anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahi binding.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi kebijakan IAM, lihat Mengonfigurasi kebijakan IAM.
- Tanda
Mengonfigurasi kontrol kebijakan untuk sertifikat produksi
Setelah menguji kontrol kebijakan, Anda dapat menggunakan kontrol kebijakan tersebut di lingkungan produksi.
Mengonfigurasi kontrol kebijakan untuk sertifikat DNS produksi
Bagian ini menjelaskan cara menetapkan kontrol kebijakan untuk mengizinkan pengguna prod-dns-requester
meminta sertifikat TLS entitas akhir untuk domain .prod.example.com
DNS.
Membuat template sertifikat untuk sertifikat DNS produksi
Gunakan petunjuk berikut untuk membuat template sertifikat yang berisi konfigurasi TLS server entitas akhir. Template sertifikat ini membatasi sertifikat untuk hanya menggunakan SAN DNS di domain *.prod.example.com
. Pembatasan ini diterapkan menggunakan ekspresi Common Expression Language (CEL). Template sertifikat juga menghapus subjek apa pun yang ditentukan dalam permintaan sertifikat.
Buat template sertifikat prod-server-tls-template
menggunakan perintah gcloud
berikut.
gcloud
gcloud privateca templates create prod-server-tls-template \
--predefined-values-file ./leaf_server_tls_predefined_values.yaml \
--no-copy-subject \
--copy-sans \
--identity-cel-expression "subject_alt_names.all(san, san.type == DNS && san.value.endsWith('.prod.example.com'))"
Dengan keterangan:
- Flag
--predefined-values-file
digunakan untuk meneruskan file YAML yang mendeskripsikan nilai X.509 standar yang ditetapkan oleh template sertifikat. - Tanda
--no-copy-subject
menghapus semua subjek yang ditentukan penelepon dari permintaan sertifikat. - Tanda
--copy sans
memastikan bahwa ekstensi SAN dari permintaan sertifikat disalin ke dalam sertifikat yang ditandatangani. - Flag
--identity-cel-expression
digunakan untuk meneruskan ekspresi CEL yang dievaluasi terhadap identitas dalam sertifikat sebelum diterbitkan. Untuk mengetahui informasi selengkapnya tentang ekspresi CEL, lihat Menggunakan ekspresi CEL.
Untuk informasi selengkapnya tentang cara membuat template sertifikat, lihat Membuat template sertifikat.
Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca templates create
, lihat gcloud privateca templates create.
Membuat binding IAM DNS produksi
Agar pengguna prod-dns-requester@
dalam kumpulan CA DNS dapat meminta sertifikat TLS server produksi, buat binding IAM bersyarat pada kumpulan CA. Berikan peran privateca.certificateRequester
kepada pengguna prod-dns-requester@
hanya jika permintaan sertifikat berisi referensi ke template prod-server-tls-template
. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM, baca: Kontrol akses dengan IAM.
Buat file YAML kebijakan
prod_dns_condition.yaml
, lalu salin konfigurasi TLS berikut ke dalam file.title: Production DNS binding description: allows user to only create DNS production certificates expression: api.getAttribute("privateca.googleapis.com/template", "") == "PROJECT_ID/-/prod-server-tls-template"
Gunakan perintah
gcloud
berikut untuk menambahkan kontrol kebijakan yang mengizinkanprod-dns-requester@
hanya meminta sertifikat TLS server produksi dari kumpulan CA.gcloud
gcloud privateca pools add-iam-policy-binding POOL_NAME \ --role='roles/privateca.certificateRequester' \ --member='user:prod-dns-requester@' \ --condition-from-file=./prod_dns_condition.yaml
Dengan keterangan:
- Tanda
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan kepada anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahi binding. - Flag
condition-from-file
digunakan untuk meneruskan nama file dengan kondisi CEL.
Untuk mengetahui informasi selengkapnya tentang perintah
gcloud privateca pools add-iam-policy-binding
, lihat gcloud privateca pool add-iam-policy-binding.- Tanda
Untuk menambahkan kontrol kebijakan yang mengizinkan
prod-dns-requester@
menggunakan template sertifikat 'prod-server-tls-template', gunakan perintahgcloud
berikut:gcloud
gcloud privateca templates add-iam-policy-binding prod-server-tls-template \ --role='roles/privateca.templateUser' \ --member='user:prod-dns-requester@'
Dengan keterangan:
- Tanda
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan kepada anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahi binding.
- Tanda
Kontrol kebijakan pengguna yang tidak dibatasi
Agar pengguna blank-check-requester@
dapat meminta sertifikat apa pun tanpa batasan apa pun, buat binding IAM tanpa kondisional apa pun yang memberi pengguna peran privateca.certificateRequester
.
gcloud
gcloud privateca pools add-iam-policy-binding POOL_NAME \
--role='roles/privateca.certificateRequester' \
--member='user:blank-check-requester@example.com'
Dengan keterangan:
- Nilai flag
--role
menentukan peran yang ditetapkan kepada pengguna. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM. - Nilai tanda
--member
menentukan pengguna yang diberi peran.
Menguji kontrol kebijakan
Setelah Anda menerapkan penerbitan sertifikat dan kebijakan IAM, penting untuk meninjau dan menguji kebijakan ini untuk memastikan bahwa kebijakan tersebut berfungsi seperti yang diharapkan.
Mengambil semua binding kebijakan
Ambil semua kebijakan IAM yang diterapkan pada kumpulan CA Anda. Untuk mengambil semua kebijakan IAM untuk kumpulan CA, gunakan perintah gcloud privateca pools get-iam-policy
:
gcloud
gcloud privateca pools get-iam-policy POOL_NAME
Dengan keterangan:
- POOL_NAME adalah ID unik dari kumpulan CA.
Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca pools get-iam-policy
, lihat gcloud privateca pool get-iam-policy.
Membuat sertifikat
Bagian ini memberikan informasi tentang membuat sertifikat tujuan umum, serta sertifikat DNS pengujian dan produksi.
Membuat sertifikat DNS pengujian
Untuk mengizinkan pengguna test-dns-requester@
meminta sertifikat DNS pengujian dari kumpulan CA, gunakan perintah gcloud
berikut:
gcloud
gcloud privateca certificates create test-dns-1 \
--project=PROJECT_ID \
--issuer-location=LOCATION \
--issuer-pool=POOL_NAME \
--dns-san=foo.bar.test.example.com \
--generate-key \
--key-output-file=KEY_FILE_NAME \
--cert-output-file=test_dns_cert.pem \
--template=projects/PROJECT_ID/locations/LOCATION/certificateTemplates/test-server-tls-template
Dengan keterangan:
- Flag
--issuer-location
digunakan untuk menetapkan lokasi sertifikat. Untuk daftar lengkap lokasi, lihat Lokasi. - Flag
--issuer-pool
menetapkan kumpulan CA tempat sertifikat diminta. - Flag
--dns-san
digunakan untuk menyetel satu atau beberapa SAN DNS yang dipisahkan koma. - Flag
--generate-key
memicu pembuatan kunci pribadi RSA-2048 baru di komputer Anda. - Flag
--key-output-file
digunakan untuk menetapkan jalur tempat kunci pribadi yang dihasilkan ditulis (dalam format PEM). - Tanda
--cert-output-file
digunakan untuk menetapkan jalur tempat file rantai sertifikat berenkode PEM yang dihasilkan ditulis (diurutkan dari entity akhir ke root). - Tanda
--template
digunakan untuk menetapkan nama template sertifikat yang ingin Anda gunakan untuk menerbitkan sertifikat ini. Template yang ditentukan harus berada di lokasi yang sama dengan kumpulan CA penerbit. Untuk informasi selengkapnya tentang template sertifikat, lihat Ringkasan template sertifikat dan kebijakan penerbitan.
Membuat sertifikat produksi
Pengguna prod-dns-requester
kini dapat meminta sertifikat DNS produksi dari kumpulan CA. --dns-san=foo.bar.prod.example.com
menambahkan SAN jenis DNS dengan nilai yang ditentukan ke permintaan sertifikat.
gcloud
gcloud privateca certificates create prod-dns-1 \
--project=PROJECT_ID \
--issuer-location=LOCATION \
--issuer-pool=POOL_NAME \
--dns-san=foo.bar.prod.example.com \
--generate-key \
--key-output-file=KEY_FILE_NAME \
--cert-output-file=prod_dns_cert.pem \
--template=projects/PROJECT_ID/locations/LOCATION/certificateTemplates/prod-server-tls-template
Dengan keterangan:
- Flag
--issuer-location
digunakan untuk menetapkan lokasi sertifikat. Untuk daftar lengkap lokasi, lihat Lokasi. - Flag
--issuer-pool
menetapkan kumpulan CA tempat sertifikat diminta. - Flag
--dns-san
digunakan untuk menyetel satu atau beberapa SAN DNS yang dipisahkan koma. - Flag
--generate-key
memicu pembuatan kunci pribadi RSA-2048 baru di komputer Anda. - Flag
--key-output-file
digunakan untuk menetapkan jalur tempat kunci pribadi yang dihasilkan ditulis (dalam format PEM). - Tanda
--cert-output-file
digunakan untuk menetapkan jalur tempat file rantai sertifikat berenkode PEM yang dihasilkan ditulis (diurutkan dari entity akhir ke root). - Flag
--template
digunakan untuk menetapkan nama template sertifikat yang akan digunakan untuk menerbitkan sertifikat ini. Template yang ditentukan harus berada di lokasi yang sama dengan kumpulan CA penerbit. Untuk informasi selengkapnya tentang template sertifikat, lihat Ringkasan template sertifikat dan kebijakan penerbitan.
Membuat sertifikat tujuan umum
Pengguna blank-check-requester@
dapat meminta sertifikat apa pun dari kumpulan CA menggunakan perintah gcloud privateca certificates create
.
Untuk meminta sertifikat dari kumpulan CA, Anda dapat menggunakan kunci publik/pribadi yang dibuat oleh CA Service. Untuk informasi selengkapnya tentang cara meminta sertifikat, lihat Meminta sertifikat dan melihat sertifikat yang diterbitkan.
Pembersihan
Bagian ini menjelaskan cara menghapus kebijakan IAM pada kumpulan CA.
Menghapus binding IAM tertentu
Untuk menghapus binding kondisional IAM pada kumpulan CA bagi pengguna blank-check-requester
, gunakan perintah gcloud
berikut:
gcloud
gcloud privateca pools remove-iam-policy-binding POOL_NAME \
--role='roles/privateca.certificateRequester' \
--member='user:blank-check-requester@'
Dengan keterangan:
- Nilai flag
--role
menentukan peran yang ditetapkan kepada pengguna. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM. - Nilai tanda
--member
menentukan pengguna yang diberi peran.
Saat menghapus binding IAM tertentu, Anda harus memberikan semua informasi yang terkait dengan binding IAM dalam perintah gcloud privateca pools remove-iam-policy-binding
. Peran dan anggota mungkin memiliki beberapa binding IAM dengan kondisi yang berbeda. Anda harus memberikan semua detail terkait binding IAM untuk menghindari penghapusan binding yang berbeda secara tidak sengaja.
Untuk mengetahui informasi selengkapnya tentang perintah gcloud privateca pools remove-iam-policy-binding
, lihat gcloud privateca pool remove-iam-policy-binding.
Menghapus semua binding kondisional IAM
Untuk menghapus binding IAM, Anda dapat menggunakan perintah gcloud privateca pools remove-iam-policy-binding
. Saat menghapus binding kondisional IAM, Anda harus memberikan semua informasi tentang binding tersebut. Pengguna dan peran dapat memiliki lebih dari satu binding kondisional. Untuk menghapus semua binding kondisional, gunakan flag --all
dalam perintah gcloud
Anda.
Gunakan perintah gcloud
berikut untuk menghapus semua binding bagi pengguna prod-code-signing-requester
.
gcloud
gcloud privateca pools remove-iam-policy-binding POOL_NAME \
--role='roles/privateca.certificateRequester' \
--member='user:prod-code-signing-requester@' \
--all
Dengan keterangan:
- Nilai flag
--role
menentukan peran yang ditetapkan kepada pengguna. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk CA Service, lihat Kontrol akses dengan IAM. - Nilai tanda
--member
menentukan pengguna yang diberi peran.