このガイドでは、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 つのリビジョンをデプロイする] を選択します。
- デプロイするイメージを入力または選択します。
- [詳細設定] セクションを開きます。
- [セキュリティ] タブをクリックします。
[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
この内容で
service.yaml
ファイルを新規作成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/binary-authorization: POLICY spec: template: spec: containers: - image: IMAGE
次のように置き換えます。
- SERVICE: Cloud Run の名前
- IMAGE: コンテナ イメージの URL。
- POLICY:
default
に設定します。
次のコマンドを使用して新しいサービスをデプロイします。
gcloud run services replace service.yaml
次のステップ
built-by-cloud-build
認証者を使用して、Cloud Build によってビルドされたイメージのみをデプロイする。- Google Cloud コンソールまたはコマンドライン ツールを使用して Binary Authorization ポリシーを構成する。
- 証明書を使用して、署名付きのコンテナ イメージのみをデプロイする。
- 承認されたビルドのみがデプロイされるように、Cloud Run で Binary Authorization を使用する方法を動画で確認する。