Tutorial ini memberikan petunjuk untuk menggunakan Otorisasi Biner sebagai bagian dari deployment protokol lapisan bawah minimal (MLLP) dalam penyiapan multi-project. Menggunakan 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 tahu cara:
- Konfigurasikan attestor untuk melakukan pengesahan saat image MLLP siap di-deploy.
- Men-deploy image yang diautentikasi dari biner adaptor MLLP.
- Gunakan penyiapan multi-project untuk memisahkan tanggung jawab penandatanganan image dari lingkungan deployment.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Healthcare API
- Google Kubernetes Engine
- Artifact Analysis
- Cloud Key Management Service
- Binary Authorization
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Prasyarat
Sebelum memulai tutorial ini, pahami dokumentasi konsep 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 telah diinstal lebih dulu dengan alat command line Google Cloud CLI dan kubectl
. Gcloud CLI menyediakan antarmuka command line utama untuk Google Cloud. Alat kubectl
menyediakan antarmuka command line untuk menjalankan perintah terhadap cluster Kubernetes.
Jika lebih suka menggunakan shell lokal, Anda harus menginstal Google Cloud CLI.
Untuk membuka Cloud Shell atau mengonfigurasi shell lokal, 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 Aktifkan 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 penampung, 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 kriptografi untuk memverifikasi identitas pengesah dengan aman. Hal ini memastikan hanya pihak terverifikasi yang dapat berpartisipasi dalam otorisasi image penampung. Pasangan kunci terdiri dari kunci pribadi, yang digunakan pengautentikasi untuk menandatangani pengesahan secara digital, dan kunci publik, yang Anda tambahkan ke pengautentikasi seperti yang disimpan oleh layanan Otorisasi Biner.
Jika Anda 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.
Lengkapi formulir, lalu klik Buat. Nama project yang Anda pilih direferensikan sebagai KMS_PROJ_ID di seluruh tutorial ini.
Untuk informasi selengkapnya tentang cara membuat project, lihat Membuat dan mengelola project.
Untuk mengaktifkan Cloud KMS API di project Cloud KMS, jalankan perintah berikut:
gcloud services enable cloudkms.googleapis.com \ --project=KMS_PROJ_ID
Untuk membuat ring kunci, jalankan perintah berikut, dengan KEY_RING adalah nama unik untuk ring kunci 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 di 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, set data, dan penyimpanan HL7v2 HL7v2
Untuk membuat dan mengonfigurasi project, set data, dan penyimpanan HL7v2 HL7v2, selesaikan langkah-langkah berikut:
Untuk membuat project HL7v2, selesaikan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Project Baru.
Lengkapi formulir, lalu klik Buat. Nama project yang Anda pilih direferensikan sebagai HL7V2_PROJ_ID di seluruh tutorial ini.
Untuk mengaktifkan Cloud Healthcare API di 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 Analisis Artefak.
Untuk membuat catatan Analisis Artefak, selesaikan langkah-langkah berikut:
Buat project catatan dengan menyelesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Project Baru.
- Lengkapi formulir, lalu klik Buat. Nama project yang Anda pilih direferensikan sebagai NOTE_PROJ_ID di seluruh tutorial ini.
Untuk mengaktifkan Artifact Analysis API di project catatan, jalankan perintah berikut:
gcloud services enable containeranalysis.googleapis.com \ --project=NOTE_PROJ_ID
Untuk menyimpan payload catatan contoh 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 Analisis Artefak dalam 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 memverifikasi 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 pengautentikasi
Project pengesah menyimpan pengesah, yang memverifikasi atau menyatakan bahwa image penampung siap di-deploy.
Untuk membuat dan mengonfigurasi pengautentikasi, selesaikan langkah-langkah berikut:
Untuk membuat project pengautentikasi, selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman New Project.
- Lengkapi formulir, lalu klik Buat. Nama project yang Anda pilih direferensikan sebagai ATTESTOR_PROJ_ID di seluruh tutorial ini.
Untuk mengaktifkan Binary Authorization dan Cloud KMS API di project pengesahan, 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 pengautentikasi di project pengautentikasi, jalankan perintah berikut. Pengesah 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 pengautentikasi telah dibuat, jalankan perintah berikut:
gcloud beta container binauthz attestors list \ --project=ATTESTOR_PROJ_ID
Lakukan penggantian berikut, lalu simpan contoh JSON ke file bernama
./tmp/iam_request.json
dengan menjalankan perintah berikut:- Gunakan nilai NOTE_PROJ_ID dan NOTE_ID dari Membuat catatan Artifact Analysis.
Untuk menemukan ATTESTOR_PROJECT_NUM, selesaikan langkah-langkah berikut:
Buka halaman Dasbor di konsol Google Cloud.
Klik menu drop-down Select from di bagian atas halaman. Di jendela Pilih dari yang muncul, pilih project pengautentikasi.
Nomor project ditampilkan di kartu Project info pada 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 akun layanan Otorisasi Biner project pengesahan agar dapat membaca kemunculan catatan Analisis Artefak 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 di project Cloud KMS ke pengautentikasi, 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 oleh penegasnya bahwa proses yang diperlukan dalam pipeline Anda telah selesai dan image penampung diberi otorisasi untuk di-deploy.
Untuk membuat pengesahan, selesaikan langkah-langkah berikut:
Untuk membuat project pengesahan, selesaikan langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Project Baru.
- Lengkapi formulir, lalu klik Buat. Nama project yang Anda pilih direferensikan sebagai ATTESTATION_PROJ_ID di seluruh 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 deployer 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 Project Baru.
- Lengkapi formulir, lalu klik Buat. Nama project yang Anda pilih direferensikan sebagai DEPLOYER_PROJ_ID di seluruh tutorial ini.
Untuk mengaktifkan Binary Authorization API di project deployer, jalankan perintah berikut:
gcloud services enable binaryauthorization.googleapis.com \ --project=DEPLOYER_PROJ_ID
Untuk memberikan izin akun layanan Otorisasi Biner di project deployer untuk mengakses attestor guna 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
di 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 menambahkan sumber image ke daftar yang diizinkan dan menetapkan aturan default cakupan project untuk memblokir image dari sumber yang belum disahkan oleh pengautentikasi. 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, 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
Lakukan penggantian berikut, lalu simpan contoh YAML ke file bernama
./tmp/deployment.yaml
dengan menjalankan perintah berikut:- IMAGE_SIGNED adalah lokasi
Gambar Adaptor MLLP yang ditandatangani,
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
Gambar Adaptor MLLP yang ditandatangani,
Untuk membuat deployment dengan image yang diautentikasi, 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
menampilkan satu pod yang sedang berjalan danget event
menampilkanScaled up replica set mllp-adapter-deployment-xxxx to 1
.
Setelah menyelesaikan bagian ini, Anda telah berhasil men-deploy image adaptor MLLP yang diautentikasi 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 berikut yang Anda buat dalam tutorial ini:
- Project attestor
- Project pengesahan
- Project deployer
- Project catatan
- Project Cloud KMS
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.