ืืืืจืื ืืื ืชืืืื ืืื ืืืฆืืจ ืืืฉืืจ ืฉื Binary Authorization ืืฆืื ืืจ ืขืืืื ื ืชืื ืื ืฉื Cloud Build. ืืืืืจื ืืื ืขืืืจืช ืืืืื ืฉืจืง ืงืืืฆื ืืืื' ืฉื ืงืื ืืืื ืจืื ืฉื ืื ื ืื ืืชืื ืืืืง ืืชืืืื ื-build ืฉื Cloud Build ืืงืืื ืืจืฉืื ืืืืืืืืช ืืคืขืื ืืกืืืืช ืืคืจืืกื ืฉืืื.
ืกืงืืจื ืืืืืช ืขื Cloud Build
โซCloud Build (ืกืงืืจื ืืืืืช) ืืืงื ืงืื ืืงืืจ ืฉืืืืืกื ืืืืืจ ืืืจื, ืืจืืฅ ืืช ืืจืกืืืช ื-build ืืืืืืงืืช ืฉืืื ืืืืืกื ืืช ืคืื ืืชืืื ื ืฉืืชืงืื ื-Container Registry ืื ืืฉืืจืืช ืืืกืื ืืืจ ื-Google Cloud Platform.
ืกืงืืจื ืืืืืช ืขื Binary Authorization
โซBinary Authorization (ืกืงืืจื ืืืืืช) ืืื ืืืฆืจ ืฉืGoogle Cloud ืฉืืืื ืืืืืฆืื ืขื ืืคืืืงืฆืืืช ืืืื ืืคืจืืกื. ืืฉืืืื ืฉืื ืขื Google Kubernetes Engineโ (GKE) ืืืคืฉืจ ืืืฉืชืืฉืื ืืืืืฃ ืฉืงืื ืืืื ืจืื ืฉื ืคืจืกื ืืืฉืืื Kubernetes ืืชืืืื ืืืืคื ืงืจืืคืืืืจืคื ืขื ืืื ืจืฉืืช ืืืืื ื, ืืืืืืชืื ืขื ืืื ืืืจื ืืืืช (attestor) ืฉื Binary Authorization.
ืืชื ืืืืืื ืืืืืืจ ืืช Binary Authorization ืื ืฉืืืจืืฉ ืืืฉืืจืื ืขื ืกืื ืืืืงืื ืฉื ืงืื ืืืงืืจ, ืืื ืืื ืืข ืคืจืืกื ืฉื ืงืืืฆื ืืืื' ืฉื ืงืื ืืืื ืจืื ืฉื ืื ื ืืืงืืจ ืื ืืืจืฉื.
ืืืืข ื ืืกืฃ:
- ืืืื ืืืื ื-Binary Authorization
- Codelab: Securing Your GKE Deployments with Binary Authorization
ืืจืืืืงืืืจื
ืืชืจืฉืื ืืื ืืฆืื ืืช ืืจืืืืื ืืืืืจื ืฉื Binary Authorization/Cloud Build:
ืืฆืื ืืจ ืืื:
ืงืื ืืืฆืืจืช ืงืืืฅ ืืืื' ืฉื ืงืื ืืืื ืจ ืืืขืืจ ืืืืืจ ืืงืืจ.
ืืื ืืืื ืืืจืฆืื ืจืฆืืคื (CI),โ Cloud Build, ืืืฆืจ ืืืืืง ืืช ืืงืื ืืืื ืจ.
ื-build ืืขืืืจ ืืช ืงืืืฅ ืืืืื' ืฉื ืืงืื ืืืื ืจ ืื Container Registry ืื ืื ืืืืจ ืืืจ ืฉืื ืืืืืกื ืื ืงืืืฆื ืืืืื' ืฉื ืืฆืจื.
โซCloud Key Management Service, ืฉืืกืคืง ื ืืืื ืืคืชืืืช ืืืื ืืืคืชืืืช ืืงืจืืคืืืืจืคืืื, ืืืชื ืขื ืงืืืฅ ืืืืื' ืฉื ืืงืื ืืืื ืจ. ืืืชืืื ืฉืืชืงืืืช ื ืฉืืจืช ืืืืฉืืจ ืืืฉ ืฉื ืืฆืจ.
ืืืื ืืคืจืืกื, ืืืืจื ืืืืฉืจ ืืืืช ืืช ืืืืฉืืจ ืืืืฆืขืืช ืืืคืชื ืืฆืืืืจื ืืืื ืืืคืชืืืช. โซBinary Authorization ืืืืฃ ืืช ืืืืื ืืืช ืขื ืืื ืืจืืฉื ืฉื ืืืืืช (attestation) ืืชืืืื ืืื ืืคืจืืก ืืช ืงืืืฅ ืืืื' ืฉื ืงืื ืืืื ืจ.
ืืฆืืจืช ืืืฉืืจ ืืืืฆืขืืช Cloud Build ืขื Cloud Key Management Service
ืืงืืข ืืื ืืืกืืจ ืืื ืืืืืขืื ืืช ืืืจืืืืงืืืจื ืฉืืืขืื. ืืื ืืฉืชืืฉ ืืฉืื ืื ืืื ืืืชืื ืืืฉืืช ืืงืื ืคืชืื ื-Cloud Build Community. ืฉืื ื-build ืืืืชืื ืืืฉืืช ืืืชื ืขื ืงืืืฅ ืืืื' ืฉื ืงืื ืืืื ืจ, ืืืฆืจ ืืช ืืืืืืช (attestation) ืืืขืื ืืืชื ื-Binary Authorization.
ืืืืจืช ื ืืืื ืืืืืืช ืืืจืฉืืืช ืืืฉื (IAM)
ืืื ืืืฉืชืืฉ ืืฉืื ืืื ืืื ืืื, ืืืฉืืื ืืฉืืจืืช ืฉื Cloud Build ืฆืจืืืื ืืืืืช ืชืคืงืืื ื-IAM ืืืืื:
- Binary Authorization Attestor Viewer
roles/binaryauthorization.attestorsViewer
- โซCloud KMS CryptoKey Signer/Verifier (ืื ืืฉืชืืฉืื ืืืคืชื ื-KMS ืืืชืืื ืขื ืืืฉืืจ)
roles/cloudkms.signerVerifier
- Artifact Analysis Notes Attacher
roles/containeranalysis.notes.attacher
ืืคืฉืจ ืืืฉืชืืฉ ืืคืงืืืืช ืืืืืช ืืื ืืืืกืืฃ ืืช ืืชืคืงืืืื ืืืฉืืื ืืฉืืจืืช ื-Cloud Build ืฉืืฉืืื ืืคืจืืืงื:
ืืคืขืืืื ืืช Cloud Build:
ืืคืขืืืื ืืช Cloud Build API ืืคืจืืืงื ืืืขื Google Cloud .
ืฉืืืจืื ืืช ืืืื ืืคืจืืืงื ืืืฉืชื ื ืกืืืื:
PROJECT_ID=PROJECT_ID
ืืืฉืจ PROJECT_ID ืืื ืืืื ืืคืจืืืงื Google Cloud .
ืืืืืจืื ืืช ืืคืจืืืงื ื-Google Cloud CLI:
gcloud config set project ${PROJECT_ID}ืืงืืืื ืืช ืืกืคืจ ืืคืจืืืงื:
PROJECT_NUMBER=$(gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)")ืืืกืืคืื ืืช ืืชืคืงืื Binary Authorization Attestor Viewer ืืืฉืืื ืืฉืืจืืช ื-Cloud Build:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \ --role roles/binaryauthorization.attestorsViewerืืืกืคืช ืืชืคืงืื Cloud KMS CryptoKey Signer/Verifier ืืืฉืืื ืืฉืืจืืช ืฉื Cloud Build (ืืชืืื ืืืืกืกืช-KMS):
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \ --role roles/cloudkms.signerVerifierืืืกืืคืื ืืช ืืชืคืงืื Artifact Analysis Notes Attacher ืืืฉืืื ืืฉืืจืืช ืฉื Cloud Build:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \ --role roles/containeranalysis.notes.attacher
ืคืืชืื ืืจืืฉืื ืฉื ืฉืื ื-build ืืืืชืื ืืืฉืืช ืืืืฆืขืืช Cloud Build
ืืฉืืคืืื ืืช ืืืืจ ืืงืืืื ืฉื Google Cloud Build:
git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git
ืืืืืจืื ืืช ืืืืชื ืฉื Binary Authorization ื-Cloud Build:
ืืคื ื ืืฉืืืืฉ, ืฆืจืื ืืืฆืืจ ืงืื ืืืื ืจ ืืืงืื ืฉื ืฉืื ืืื ืืื ืืืืชืื ืืืฉืืช ืืืืขืืืจ ืืืชื ืืืืืคื ื-Cloud Build. ืืื ืืขืฉืืช ืืืช, ืืจืืฆืื ืืช ืืคืงืืืืช ืืืืืช:
cd cloud-builders-community/binauthz-attestation gcloud builds submit . --config cloudbuild.yaml
ืฉืื ืืื ืืื ืืืชืืื ืืืฉืืช ืืืขืืจ ืื Google Container Registry ืฉื ืืคืจืืืงื ืื ืืืื ืืืืื ืืฉืืืืฉ.
ืืฆืืจืช ืืืจื ืืืืช (attestor) ื-Binary Authorization
ืืืฆืจืื ืืืจื ืืืืช (attestor) ืฉ-Binary Authorization ืืฉืชืืฉ ืื ืืืื ืืคืจืืกื ืืื ืืืืช ืืช ืืืืืืช (attestation).
ืืืืจื ืฉื ืืืืช ืืฉื ืฆืื ืืคืชืืืช ืฉื Cloud Key Management Service ื-Binary Authorization:
ืืื ืืืฆืจืื ืืืืช ืืืืฆืขืืช ื-CLI
ืืืืืืื ืฉืืืืืช ื ืืฆืจ
gcloud --project="${ATTESTOR_PROJECT_ID}" container binauthz attestors list
ืืืกืคืช ืฉืื ืฉื ืืฆืืจืช ืืืฉืืจ ื-cloudbuild.yaml
ืืื ืืืฉืชืืฉ ืืฉืื binauthz-attestation, ืฆืจืื ืืขืืื ืืช cloudbuild.yaml ืืืืืกืืฃ ืืช ืืฉืื ืฉืืืชืื ืขื ื-build ืฉื ืฉืื ืื Container Registry.
ืืืืฉื ืืคืืจืืืช ืฉืชื ืฉืืืืช:
ืืขืืื ืื ืืช
cloudbuild.yamlืืืืคื ืืื ื.ืืจืืฆืื ืฆืื ืืจ ืืืืืื ืขื ืืฉืชื ื ืืกืืืื ืฉืืืืจืชื ืงืืื.
ืขืืืื ืืื ื ืฉื cloudbuild.yaml
ืืขืืื ืื ืืช
cloudbuild.yamlืืืืคื ืืื ื ืขื ืืื ืืืกืคืช ืฉืื ื-build ืฉืืืืฉื ืืืจื ืืฉืื ืฉืื ืืืืืจ ืืืขืื ื-Container Registry. ืืขืจื: ืฆืจืื ืืืืืืฃ ืืช ATTESTOR_NAME,โ KMS_KEY_LOCATION,โ KMS_KEYRING_NAME,โ KMS_KEY_NAME ื-KMS_KEY_VERSION ืืขืจืืื ืฉืืื ืืืืคื ืืื ื:- id: 'create-attestation' name: 'gcr.io/${PROJECT_ID}/binauthz-attestation:latest' args: - '--artifact-url' - 'gcr.io/${PROJECT_ID}/helloworld:latest' - '--attestor' - 'projects/${PROJECT_ID}/attestors/ATTESTOR_NAME' - '--keyversion' - 'projects/${PROJECT_ID}/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION'ืื ืืืืจืืืช ืืืื ืชืงืื ื:
- id: 'create-attestation' name: 'gcr.io/${PROJECT_ID}/binauthz-attestation:latest' args: - '--artifact-url' - 'gcr.io/${PROJECT_ID}/helloworld:latest' - '--attestor' - 'ATTESTOR_NAME' - '--attestor-project' - '${PROJECT_ID}' - '--keyversion' - 'KEY_VERSION' - '--keyversion-project' - '${PROJECT_ID}' - '--keyversion-location' - 'KEY_LOCATION' - '--keyversion-keyring' - 'KEYRING_NAME' - '--keyversion-key' - 'KEY_NAME'
ืืืคืฆืืื ืื: ืืืืงืช ืฆืื ืืจ ืื ืชืื ืื
ืืื ืืืืืง ืฆืื ืืจ ืขืืืื ื ืชืื ืื ืืืืืื ืฉื ืืืฉืืจ ื-Cloud Build, ืืืฆืขืื ืืช ืืฉืืืื ืืืืื:
ืืืฆืจืื ืงืืืฅ
cloudbuild.yamlืขื ืืฉืชื ื ืืกืืืื ืฉืืืืจืชื ืงืืื:cd example cat <<EOM > cloudbuild_example.yaml steps: - id: 'build' name: 'gcr.io/cloud-builders/docker' args: - 'build' - '-t' - 'gcr.io/$PROJECT_ID/helloworld:latest' - '.' - id: 'publish' name: 'gcr.io/cloud-builders/docker' args: - 'push' - 'gcr.io/$PROJECT_ID/helloworld:latest' - id: 'create-attestation' name: 'gcr.io/$PROJECT_ID/binauthz-attestation:latest' args: - '--artifact-url' - 'gcr.io/$PROJECT_ID/helloworld:latest' - '--attestor' - 'projects/$PROJECT_ID/attestors/${ATTESTOR_NAME}' - '--keyversion' - 'projects/${PROJECT_ID}/locations/${KMS_KEY_LOCATION}/keyRings/${KMS_KEYRING_NAME}/cryptoKeys/${KMS_KEY_NAME}/cryptoKeyVersions/${KMS_KEY_VERSION}' tags: ['cloud-builders-community'] EOMืืจืืฆืื ืืช Cloud Build ืขื ืืืืืื
cloudbuild_example.yaml:ืืืกืคืจืืื
cloud-builders-community/binauthz-attestation/example, ืืจืืฆืื ืืช ืืคืงืืืืช ืืืืืช:gcloud builds submit . --config cloudbuild_example.yaml