Tutorial: Mengelola kontrol kebijakan
Tutorial ini menunjukkan cara menerapkan kontrol kebijakan pada resource Layanan Otoritas Sertifikasi.
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 tentang berbagai kontrol kebijakan yang ditawarkan oleh Layanan CA.
- 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 Layanan CA.
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 di 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 kumpulan CA.
- Flag
--subject
digunakan untuk meneruskan nama subjek sertifikat. - Flag
--validity
menentukan periode validitas CA. Periode validitas default adalah 10 tahun. - Flag
--max-chain-length
menentukan kedalaman maksimum CA subordinat yang diizinkan dalam CA. - Flag
--auto-enable
membuat CA dalam statusENABLED
, bukan dalam statusSTAGED
. Untuk mengetahui informasi selengkapnya tentang status CA, lihat Status 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 agar hanya menggunakan DNS SAN 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. - Flag
--no-copy-subject
menghapus semua subjek yang ditentukan pemanggil dari permintaan sertifikat. - Flag
--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 informasi selengkapnya tentang penggunaan ekspresi CEL untuk menerapkan berbagai kontrol kebijakan, lihat Menggunakan CEL.
Untuk mengetahui informasi selengkapnya tentang cara membuat template sertifikat, lihat Membuat template sertifikat.
- Flag
Membuat binding IAM untuk sertifikat pengujian DNS
Untuk mengizinkan pengguna test-dns-requester@
di kumpulan CA DNS meminta sertifikat TLS server pengujian, buat binding IAM bersyarat di 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 Layanan CA, 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 Anda memberikan project ID di 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 memungkinkantest-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:
- Flag
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan ke anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk Layanan CA, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahkan binding-nya. - Flag
condition-from-file
digunakan untuk meneruskan nama file dengan kondisi CEL.
- Flag
Gunakan
gcloud
berikut untuk menambahkan kontrol kebijakan yang memungkinkantest-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:
- Flag
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan ke anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk Layanan CA, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahkan binding-nya.
Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan IAM, lihat Mengonfigurasi kebijakan IAM.
- Flag
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 agar hanya menggunakan DNS SAN 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. - Flag
--no-copy-subject
menghapus semua subjek yang ditentukan pemanggil dari permintaan sertifikat. - Flag
--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 mengetahui 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
Untuk mengizinkan pengguna prod-dns-requester@
di kumpulan CA DNS meminta sertifikat TLS server produksi, buat binding IAM bersyarat di 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, lihat: Kontrol akses dengan IAM.
Buat file YAML kebijakan
prod_dns_condition.yaml
dan 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 memungkinkanprod-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:
- Flag
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan ke anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk Layanan CA, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahkan binding-nya. - Flag
condition-from-file
digunakan untuk meneruskan nama file dengan kondisi CEL.
Untuk informasi selengkapnya tentang perintah
gcloud privateca pools add-iam-policy-binding
, lihat gcloud privateca pools add-iam-policy-binding.- Flag
Untuk menambahkan kontrol kebijakan yang memungkinkan
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:
- Flag
--role
digunakan untuk meneruskan nama peran yang akan ditetapkan ke anggota. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk Layanan CA, lihat Kontrol akses dengan IAM. - Flag
--member
digunakan untuk meneruskan anggota yang akan ditambahkan binding-nya.
- Flag
Kontrol kebijakan pengguna yang tidak dibatasi
Untuk mengizinkan pengguna blank-check-requester@
meminta sertifikat apa pun tanpa batasan, buat binding IAM tanpa kondisional 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 tanda
--role
menentukan peran yang ditetapkan kepada pengguna. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk Layanan CA, lihat Kontrol akses dengan IAM. - Nilai tanda
--member
menentukan pengguna yang diberi peran.
Menguji kontrol kebijakan
Setelah menerapkan kebijakan IAM dan penerbitan sertifikat, Anda harus meninjau dan menguji kebijakan ini untuk memastikan kebijakan tersebut berfungsi seperti yang diharapkan.
Mengambil semua binding kebijakan
Mengambil semua kebijakan IAM yang diterapkan di 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 kumpulan CA.
Untuk informasi selengkapnya tentang perintah gcloud privateca pools get-iam-policy
, lihat gcloud privateca pools get-iam-policy.
Membuat sertifikat
Bagian ini memberikan informasi tentang cara 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 mengetahui daftar lengkap lokasi, lihat Lokasi. - Flag
--issuer-pool
menetapkan kumpulan CA tempat sertifikat diminta. - Flag
--dns-san
digunakan untuk menetapkan 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). - Flag
--cert-output-file
digunakan untuk menetapkan jalur tempat file rantai sertifikat berenkode PEM yang dihasilkan ditulis (diurutkan dari entitas akhir ke root). - Flag
--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 mengetahui 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 mengetahui daftar lengkap lokasi, lihat Lokasi. - Flag
--issuer-pool
menetapkan kumpulan CA tempat sertifikat diminta. - Flag
--dns-san
digunakan untuk menetapkan 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). - Flag
--cert-output-file
digunakan untuk menetapkan jalur tempat file rantai sertifikat berenkode PEM yang dihasilkan ditulis (diurutkan dari entitas 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 mengetahui 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 melalui kumpulan CA.
Menghapus binding IAM tertentu
Untuk menghapus binding bersyarat IAM di seluruh kumpulan CA untuk 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 tanda
--role
menentukan peran yang ditetapkan kepada pengguna. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk Layanan CA, 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 yang terkait dengan binding IAM untuk menghindari penghapusan binding yang berbeda secara tidak sengaja.
Untuk informasi selengkapnya tentang perintah gcloud privateca pools remove-iam-policy-binding
, lihat gcloud privateca pools remove-iam-policy-binding.
Menghapus semua binding bersyarat IAM
Untuk menghapus binding IAM, Anda dapat menggunakan perintah gcloud privateca pools remove-iam-policy-binding
. Saat menghapus binding bersyarat IAM, Anda harus memberikan semua informasi tentang binding tersebut. Pengguna dan peran dapat memiliki lebih dari satu binding bersyarat. Untuk menghapus semua binding bersyarat, gunakan flag --all
dalam perintah gcloud
Anda.
Gunakan perintah gcloud
berikut untuk menghapus semua binding untuk 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 tanda
--role
menentukan peran yang ditetapkan kepada pengguna. Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM untuk Layanan CA, lihat Kontrol akses dengan IAM. - Nilai tanda
--member
menentukan pengguna yang diberi peran.