Tutorial ini memberikan petunjuk untuk menggunakan Otorisasi Biner sebagai bagian dari deployment protokol lapisan bawah (MLLP) minimal dalam penyiapan multi-project. Penggunaan Otorisasi Biner di Google Kubernetes Engine memastikan bahwa adaptor MLLP hanya dapat di-deploy dari image container yang diverifikasi dan ditandatangani.
Codelab Otorisasi Biner adaptor MLLP open source di GitHub menunjukkan skenario serupa secara mendetail.
Tujuan
Setelah menyelesaikan tutorial ini, Anda akan mengetahui cara:
- Mengonfigurasi attestor untuk mengesahkan saat image MLLP siap untuk deployment.
- Deploy image yang sudah dibuktikan dari biner adaptor MLLP.
- Gunakan penyiapan multi-project untuk memisahkan tanggung jawab atas penandatanganan image dari lingkungan deployment.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Healthcare API
- Google Kubernetes Engine
- Artifact Analysis
- Cloud Key Management Service
- Otorisasi Biner
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Prasyarat
Sebelum memulai tutorial ini, pahami dokumentasi konseptual tentang MLLP dengan meninjau MLLP dan adaptor MLLP Google Cloud. Dokumentasi konseptual memberikan ringkasan tentang MLLP, cara sistem perawatan dapat mengirim dan menerima pesan ke dan dari Cloud Healthcare API melalui koneksi MLLP, dan dasar-dasar keamanan MLLP.
Memilih shell
Untuk menyelesaikan tutorial ini, Anda dapat menggunakan Cloud Shell atau shell lokal Anda.
Cloud Shell adalah lingkungan shell untuk mengelola resource yang dihosting di Google Cloud. Cloud Shell dilengkapi dengan Google Cloud CLI dan alat command line kubectl
. Gcloud CLI menyediakan antarmuka command line utama untuk Google Cloud. Alat kubectl
menyediakan antarmuka command line untuk menjalankan perintah pada cluster Kubernetes.
Jika lebih suka menggunakan shell lokal, Anda harus menginstal Google Cloud CLI.
Untuk membuka Cloud Shell atau mengonfigurasi shell lokal Anda, selesaikan langkah-langkah berikut:
Cloud Shell
Untuk meluncurkan Cloud Shell, selesaikan langkah-langkah berikut:
Buka Konsol Google Cloud.
Dari pojok kanan atas konsol, klik tombol Activate Google Cloud Shell:
Sesi Cloud Shell akan terbuka di dalam frame di bagian bawah konsol. Anda menggunakan shell ini untuk menjalankan perintah gcloud
dan kubectl
.
Shell Lokal
Untuk menginstal gcloud CLI dan alat kubectl
, selesaikan langkah-langkah berikut:
Instal alat command line
kubectl
dengan menjalankan perintah berikut:gcloud components install kubectl
Project penampung
Project container, cloud-healthcare-containers
, sudah ada. File ini menyimpan gambar adaptor MLLP.
Membuat key ring dan pasangan kunci
Project Cloud KMS menyediakan tanda tangan Infrastruktur Kunci Publik (X.509) (PKIX) menggunakan Cloud KMS. Otorisasi Biner menggunakan kunci kriptografis untuk memverifikasi identitas attestor dengan aman. Hal ini memastikan bahwa hanya pihak terverifikasi yang dapat berpartisipasi dalam otorisasi image container. Pasangan kunci terdiri dari kunci pribadi, yang digunakan attestor untuk menandatangani pengesahan secara digital, dan kunci publik, yang Anda tambahkan ke attestor seperti yang disimpan oleh layanan Otorisasi Biner.
Jika ingin mengelola pasangan kunci pribadi dan publik secara lokal, project Cloud KMS tidak diperlukan. Untuk informasi selengkapnya, lihat Menggunakan kunci enkripsi yang dikelola pelanggan.
Untuk membuat key ring dan pasangan kunci, selesaikan langkah-langkah berikut:
Buat project Cloud KMS dengan menyelesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman New Project.
Isi formulir, lalu klik Buat. Nama project yang Anda pilih akan dirujuk sebagai KMS_PROJ_ID selama tutorial ini.
Untuk informasi lebih lanjut tentang membuat project, baca Membuat dan mengelola project.
Untuk mengaktifkan Cloud KMS API pada project Cloud KMS, jalankan perintah berikut:
gcloud services enable cloudkms.googleapis.com \ --project=KMS_PROJ_ID
Untuk membuat key ring, jalankan perintah berikut, dengan KEY_RING adalah nama unik untuk key ring dan KEY_RING_LOCATION adalah region seperti
us-central-1
:gcloud kms keyrings create KEY_RING \ --project=KMS_PROJ_ID \ --location=KEY_RING_LOCATION
Untuk membuat pasangan kunci, jalankan perintah berikut:
gcloud kms keys create KEY \ --project=KMS_PROJ_ID \ --keyring=KEY_RING \ --location=KEY_RING_LOCATION \ --purpose=asymmetric-signing \ --default-algorithm="ec-sign-p256-sha256"
Untuk memverifikasi versi kunci pada project Cloud KMS, jalankan perintah berikut. Versi kunci harus
1
.gcloud kms keys versions list \ --project=KMS_PROJ_ID \ --location=KEY_RING_LOCATION \ --key=KEY \ --keyring=KEY_RING
Membuat dan mengonfigurasi project HL7v2, set data, dan penyimpanan HL7v2
Untuk membuat dan mengonfigurasi project HL7v2, set data, dan penyimpanan HL7v2, selesaikan langkah-langkah berikut:
Untuk membuat project HL7v2, selesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman New Project.
Isi formulir, lalu klik Buat. Nama project yang Anda pilih akan dirujuk sebagai HL7V2_PROJ_ID selama tutorial ini.
Untuk mengaktifkan Cloud Healthcare API pada project, jalankan perintah berikut:
gcloud services enable healthcare.googleapis.com \ --project=HL7V2_PROJ_ID
Untuk membuat set data guna menyimpan penyimpanan HL7v2, jalankan perintah berikut:
gcloud healthcare datasets create DATASET_ID \ --location=HL7V2_STORE_LOCATION \ --project=HL7V2_PROJ_ID
Untuk membuat penyimpanan HL7v2, jalankan perintah berikut:
gcloud healthcare hl7v2-stores create HL7V2_STORE_ID \ --dataset=DATASET_ID \ --location=HL7V2_STORE_LOCATION \ --project=HL7V2_PROJ_ID
Membuat catatan Artifact Analysis
Project catatan memiliki catatan Artifact Analysis.
Untuk membuat catatan Artifact Analysis, selesaikan langkah-langkah berikut:
Buat proyek catatan dengan menyelesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman New Project.
- Isi formulir, lalu klik Buat. Nama project yang Anda pilih akan dirujuk sebagai NOTE_PROJ_ID selama tutorial ini.
Untuk mengaktifkan Artifact Analysis API pada project catatan, jalankan perintah berikut:
gcloud services enable containeranalysis.googleapis.com \ --project=NOTE_PROJ_ID
Untuk menyimpan contoh payload catatan ke file bernama
./tmp/note_payload.json
, jalankan perintah berikut:cat > ./tmp/note_payload.json << EOM { "name": "projects/NOTE_PROJ_ID/notes/NOTE_ID", "attestation": { "hint": { "human_readable_name": "Attestor note" } } } EOM
Untuk membuat catatan Artifact Analysis di project catatan, jalankan perintah berikut:
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data-binary @./tmp/note_payload.json \ "https://containeranalysis.googleapis.com/v1/projects/NOTE_PROJ_ID/notes/?noteId=NOTE_ID"
Untuk memastikan bahwa catatan telah dibuat, jalankan perintah berikut:
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://containeranalysis.googleapis.com/v1/projects/NOTE_PROJ_ID/notes/NOTE_ID"
Membuat dan mengonfigurasi attestor
Project attestor menyimpan attestor, yang memverifikasi atau menyatakan bahwa image container siap untuk deployment.
Untuk membuat dan mengonfigurasi attestor, selesaikan langkah-langkah berikut:
Untuk membuat project attestor, selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman New Project.
- Isi formulir, lalu klik Buat. Nama project yang Anda pilih akan dirujuk sebagai ATTESTOR_PROJ_ID selama tutorial ini.
Untuk mengaktifkan Otorisasi Biner dan Cloud KMS API pada project attestor, jalankan perintah berikut:
gcloud services enable binaryauthorization.googleapis.com \ --project=ATTESTOR_PROJ_ID gcloud services enable cloudkms.googleapis.com \ --project=ATTESTOR_PROJ_ID
Untuk membuat attestor pada project attestor, jalankan perintah berikut. Attestor menggunakan catatan yang dibuat dalam project catatan untuk pengesahan.
gcloud beta container binauthz attestors create ATTESTOR_ID \ --project=ATTESTOR_PROJ_ID \ --attestation-authority-note=NOTE_ID \ --attestation-authority-note-project=NOTE_PROJ_ID
Untuk memverifikasi bahwa attestor telah dibuat, jalankan perintah berikut:
gcloud beta container binauthz attestors list \ --project=ATTESTOR_PROJ_ID
Buat substitusi berikut, lalu simpan sampel JSON ke file bernama
./tmp/iam_request.json
dengan menjalankan perintah berikut:- Gunakan nilai NOTE_PROJ_ID dan NOTE_ID dari Membuat catatan Analisis Artefak.
Untuk menemukan ATTESTOR_PROJECT_NUM, selesaikan langkah-langkah berikut:
Buka halaman Dashboard di Konsol Google Cloud.
Klik menu drop-down Select from di bagian atas halaman. Di jendela Select from yang muncul, pilih project attestor.
Nomor project ditampilkan di kartu Project info Dasbor project.
cat > ./tmp/iam_request.json << EOM { "resource": "projects/NOTE_PROJ_ID/notes/NOTE_ID", "policy": { "bindings": [ { "role": "roles/containeranalysis.notes.occurrences.viewer", "members": [ "serviceAccount:service-ATTESTOR_PROJ_NUM@gcp-sa-binaryauthorization.iam.gserviceaccount.com" ] } ] } } EOM
Untuk memberikan izin kepada akun layanan Otorisasi Biner project attestor untuk membaca kemunculan catatan Artifact Analysis di project catatan, jalankan perintah berikut:
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data-binary @./tmp/iam_request.json \ "https://containeranalysis.googleapis.com/v1/projects/NOTE_PROJ_ID/notes/NOTE_ID:setIamPolicy"
Untuk menambahkan kunci yang dihasilkan dalam project Cloud KMS ke attestor, jalankan perintah berikut:
gcloud beta container binauthz attestors public-keys add \ --project=ATTESTOR_PROJ_ID \ --attestor=ATTESTOR_ID \ --keyversion-project=KMS_PROJ_ID \ --keyversion-location=KEY_RING_LOCATION \ --keyversion-keyring=KEY_RING \ --keyversion-key=KEY \ --keyversion=KEY_VERSION
Membuat pengesahan
Project pengesahan menyimpan pengesahan. Pengesahan adalah pernyataan dari attestor bahwa proses yang diperlukan di pipeline Anda sudah lengkap dan image container diizinkan untuk deployment.
Untuk membuat pengesahan, selesaikan langkah-langkah berikut:
Untuk membuat project pengesahan, selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman New Project.
- Isi formulir, lalu klik Buat. Nama project yang Anda pilih akan dirujuk sebagai ATTESTATION_PROJ_ID selama tutorial ini.
Untuk mengaktifkan Binary Authorization API pada project pengesahan, jalankan perintah berikut:
gcloud services enable binaryauthorization.googleapis.com \ --project=ATTESTATION_PROJ_ID
Untuk menandatangani dan membuat pengesahan, jalankan perintah berikut, dengan IMAGE_SIGNED adalah lokasi Image Adaptor MLLP yang ditandatangani,
gcr.io/cloud-healthcare-containers/mllp-adapter@sha256:231b073df13db0c65e57b0e1d526ab6816a73c37262e25c18bcca99bf4b4b185
:gcloud beta container binauthz attestations sign-and-create \ --project=ATTESTATION_PROJ_ID \ --artifact-url=IMAGE_SIGNED \ --attestor=ATTESTOR_ID \ --attestor-project=ATTESTOR_PROJ_ID \ --keyversion-project=KMS_PROJ_ID \ --keyversion-location=KEY_RING_LOCATION \ --keyversion-keyring=KEY_RING \ --keyversion-key=KEY \ --keyversion=KEY_VERSION
Men-deploy adaptor MLLP
Project deploy memiliki cluster GKE tempat Otorisasi Biner diimpor dan disimpan.
Untuk men-deploy adaptor MLLP, selesaikan langkah-langkah berikut:
Untuk membuat project deployer, selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman New Project.
- Isi formulir, lalu klik Buat. Nama project yang Anda pilih akan dirujuk sebagai DEPLOYER_PROJ_ID selama tutorial ini.
Untuk mengaktifkan Binary Authorization API pada project deployer, jalankan perintah berikut:
gcloud services enable binaryauthorization.googleapis.com \ --project=DEPLOYER_PROJ_ID
Untuk memberikan izin kepada akun layanan Otorisasi Biner pada project deployer guna mengakses attestor untuk verifikasi pengesahan, jalankan perintah berikut:
gcloud beta container binauthz attestors add-iam-policy-binding \ "projects/ATTESTOR_PROJ_ID/attestors/ATTESTOR_ID" \ --project=ATTESTOR_PROJ_ID \ --member="serviceAccount:service-DEPLOYER_PROJ_NUM@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \ --role=roles/binaryauthorization.attestorsVerifier
Untuk membuat cluster dengan
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
dalam project deployer, jalankan perintah berikut:gcloud beta container clusters create CLUSTER_NAME \ --project=DEPLOYER_PROJ_ID \ --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \ --zone CLUSTER_ZONE
Kebijakan deployment contoh akan menambahkan sumber image ke daftar yang diizinkan dan menetapkan aturan default cakupan project untuk memblokir image dari sumber yang belum disahkan oleh attestor. Untuk menyimpan contoh kebijakan deployment ke file bernama
./tmp/policy.yaml
, jalankan perintah berikut:cat > ./tmp/policy.yaml << EOM admissionWhitelistPatterns: - namePattern: gcr.io/google_containers/* - namePattern: gcr.io/google-containers/* - namePattern: k8s.gcr.io/* - namePattern: gcr.io/stackdriver-agents/* defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/ATTESTOR_PROJ_ID/attestors/ATTESTOR_ID name: projects/DEPLOYER_PROJ_ID/policy EOM
Untuk mengimpor kebijakan deployment ke project deployer, jalankan perintah berikut:
gcloud beta container binauthz policy import ./tmp/policy.yaml \ --project=DEPLOYER_PROJ_ID
Untuk melihat detail tentang kebijakan ini, buka halaman Otorisasi Biner di Konsol Google Cloud.
Untuk memeriksa kredensial cluster GKE, jalankan perintah berikut:
gcloud container clusters get-credentials \ --project=DEPLOYER_PROJ_ID \ --zone CLUSTER_ZONE CLUSTER_NAME
Buat substitusi berikut, lalu simpan contoh YAML ke file bernama
./tmp/deployment.yaml
dengan menjalankan perintah berikut:- IMAGE_SIGNED adalah lokasi
Image Adaptor MLLP bertanda tangan,
gcr.io/cloud-healthcare-containers/mllp-adapter@sha256:231b073df13db0c65e57b0e1d526ab6816a73c37262e25c18bcca99bf4b4b185
. - Gunakan nilai HL7V2_PROJ_ID, HL7V2_STORE_LOCATION, DATASET_ID, dan HL7V2_STORE_ID yang Anda gunakan dalam Membuat dan mengonfigurasi project, set data, dan penyimpanan HL7v2.
cat > ./tmp/deployment.yaml << EOM apiVersion: apps/v1 kind: Deployment metadata: name: mllp-adapter-deployment spec: replicas: 1 selector: matchLabels: app: mllp-adapter template: metadata: labels: app: mllp-adapter spec: containers: - name: mllp-adapter imagePullPolicy: Always image: IMAGE_SIGNED ports: - containerPort: 2575 protocol: TCP name: "port" command: - "/usr/mllp_adapter/mllp_adapter" - "--hl7_v2_project_id=HL7V2_PROJ_ID" - "--hl7_v2_location_id=HL7V2_STORE_LOCATION" - "--hl7_v2_dataset_id=DATASET_ID" - "--hl7_v2_store_id=HL7V2_STORE_ID" - "--api_addr_prefix=https://healthcare.googleapis.com:443/v1beta1" - "--logtostderr" - "--receiver_ip=0.0.0.0" EOM
- IMAGE_SIGNED adalah lokasi
Image Adaptor MLLP bertanda tangan,
Untuk membuat deployment dengan image yang disahkan, jalankan perintah berikut:
kubectl create -f ./tmp/deployment.yaml
Untuk mengonfirmasi bahwa deployment berhasil, jalankan perintah berikut:
kubectl get pods kubectl get event
Perintah
get pods
menunjukkan satu pod yang berjalan danget event
menampilkanScaled up replica set mllp-adapter-deployment-xxxx to 1
.
Setelah menyelesaikan bagian ini, Anda telah berhasil men-deploy gambar adaptor MLLP yang telah disahkan dengan aman ke Google Kubernetes Engine.
Menghapus project
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, Anda dapat membersihkan resource yang dibuat di Google Cloud.
Ikuti langkah-langkah di bawah ini untuk menghapus project yang Anda buat dalam tutorial ini:
- Project attestor
- Project pengesahan
- Project deployer
- Catat project
- Project Cloud KMS
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.