このガイドでは、Binary Authorization を設定してポリシーベースの Cloud Run サービスとジョブのデプロイを適用する方法について説明します。
始める前に
次の手順で Cloud Run を設定し、API を有効にします。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
既存の Cloud Run サービスで Binary Authorization を有効にする
既存のサービスで Binary Authorization の適用を有効にできます。有効にした後で適用を有効にするには、リビジョンをデプロイするか、サービス トラフィックを更新する必要があります。
既存のサービスで Binary Authorization の適用を有効にするには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。
コンソール
Google Cloud コンソールで、[Cloud Run] ページに移動します。
サービスをクリックします。
[セキュリティ] タブをクリックします。
Binary Authorization の適用をサービスで有効にするには、[有効にする] をクリックします。
省略可: Binary Authorization ポリシーを構成するには、[ポリシーを構成] をクリックします。
gcloud
サービスで Binary Authorization を有効にしてデプロイします。
gcloud run services update SERVICE_NAME --binary-authorization=default
SERVICE_NAME
は、サービスの名前に置き換えます。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
run.googleapis.com/binary-authorization:
アノテーションを次のように変更します。apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/binary-authorization: POLICY name: SERVICE spec: template:
以下を置き換えます。
- SERVICE: Cloud Run の名前
- POLICY:
default
に設定します。
次のコマンドを使用して、サービスを新しい構成に置き換えます。
gcloud run services replace service.yaml
既存の Cloud Run ジョブで Binary Authorization を有効にする
既存のジョブで Binary Authorization の適用を有効にするには、Google Cloud コンソールまたは Google Cloud CLI を使用します。
コンソール
Google Cloud コンソールで、Cloud Run の [ジョブ] ページに移動します。
ジョブをクリックしてジョブの詳細を開きます。
[構成] タブをクリックします。
[Binary Authorization] で、ポリシーリストからポリシーを選択します。
[適用] をクリックして、ジョブで Binary Authorization の適用を有効にします。
省略可: Binary Authorization ポリシーを構成するには、[ポリシーを構成] をクリックします。
gcloud
ジョブで Binary Authorization を有効にします。
gcloud run jobs update JOB_NAME --binary-authorization=POLICY
次のように置き換えます。
JOB_NAME
: ジョブの名前。POLICY
: 適用するポリシー。デフォルト ポリシーを使用するには、値default
を使用します。
組織のポリシーを構成して、Cloud Run の Binary Authorization を必須にすることをおすすめします。このポリシーが構成されていない場合、Cloud Run デベロッパーが Binary Authorization を無効にできます。
ポリシーを表示する
ポリシーを表示するには、[ポリシーを表示] をクリックします。
詳細については、Binary Authorization ポリシーの構成をご覧ください。
サービスまたはジョブのデプロイエラー
Binary Authorization ポリシー違反によってサービスまたはジョブのデプロイに失敗すると、次のようなエラーが表示されることがあります。
Revision REVISION_NAME uses an unauthorized container image. Container image IMAGE_NAME is not authorized by policy.
エラーには、イメージがポリシー違反となった理由に関する情報も含まれます。この場合、ブレークグラスを使用してポリシーの適用を回避し、イメージをデプロイできます。
新しいサービスで Binary Authorization を有効にする
新しいサービスで Binary Authorization を有効にするには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。
コンソール
[Cloud Run] ページに移動します。
[サービスを作成] をクリックします。
[サービスの作成] フォームで、次の操作を行います。
- 開発プラットフォームとして Cloud Run を選択します。
- サービスを配置するリージョンを選択します。
- サービス名を入力します。
- [次へ] をクリックして、サービスの最初のリビジョンの構成ページに進みます。
- [既存のコンテナ イメージから 1 つのリビジョンをデプロイする] を選択します。
- デプロイするイメージを入力または選択します。
- [詳細設定] セクションを展開します。
- [Security] タブをクリックします。
[Binary Authorization を使用してコンテナのデプロイを確認する] チェックボックスをオンにします。
(省略可)[ポリシーを構成] をクリックして Binary Authorization ポリシーを構成します。ポリシーの構成の詳細については、ポリシーの構成をご覧ください。
サービスをデプロイします。
gcloud
サービスで Binary Authorization を有効にしてデプロイします。
gcloud run deploy SERVICE_NAME --image=IMAGE_URL --binary-authorization=default --region=REGION
次のように置き換えます。
SERVICE_NAME
: サービスの名前。IMAGE_URL
: デプロイするイメージ。REGION
: サービスをデプロイするリージョン。
新しいジョブで Binary Authorization を有効にする
新しいジョブで Binary Authorization を有効にするには、Google Cloud CLI を使用します。
gcloud
Binary Authorization を有効にした新しいジョブを作成します。
gcloud run jobs create JOB_NAME \ --image IMAGE_URL OPTIONS \ --binary-authorization=POLICY \ --region=REGION
次のように置き換えます。
JOB_NAME
: 作成するジョブの名前。このパラメータは省略できますが、省略するとジョブ名の入力を求められます。POLICY
: 適用するポリシー。デフォルト ポリシーを使用するには、値default
を使用します。- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/job:latest
など)。 REGION
: このジョブが実行されるリージョン。OPTIONS
: Cloud Run のジョブ作成ページで説明されている任意のオプション。
ジョブの作成が完了するまで待ちます。正常に完了すると、コンソールに成功メッセージが表示されます。
ジョブを実行する方法については、ジョブを実行するまたはスケジュールに従ってジョブを実行するをご覧ください。
新しいジョブを作成する場合、Cloud Run サービス エージェントはコンテナにアクセスする必要があります(これがデフォルトです)。
YAML
新しい
job.yaml
ファイルをこの内容で作成します。apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB annotations: run.googleapis.com/binary-authorization: POLICY spec: template: spec: containers: - image: IMAGE
次のように置き換えます。
- JOB: Cloud Run ジョブの名前
- IMAGE: コンテナ イメージの URL
- POLICY:
default
に設定します。
次のコマンドを使用して、新しいジョブをデプロイします。
gcloud run jobs replace job.yaml
次のステップ
built-by-cloud-build
認証者を使用して、Cloud Build によってビルドされたイメージのみをデプロイする。- Google Cloud コンソールまたはコマンドライン ツールを使用して、Binary Authorization ポリシーを構成します。
- 証明書を使用して、署名付きのコンテナ イメージのみをデプロイする。
- 承認されたビルドのみがデプロイされるように、Cloud Run で Binary Authorization を使用する方法を動画で確認する。