Google Distributed Cloud 上の Binary Authorization は、Binary Authorization のホストされているデプロイ時の強制適用をオンプレミスのユーザー クラスタに拡張する Google Cloud の機能です。Google Distributed Cloud での Binary Authorization の主なユースケースは、ユーザー クラスタのワークロードを保護することです。このガイドの手順に沿って、Google Cloud プロジェクトで構成した Binary Authorization ポリシーの適用ルールをユーザー クラスタに適用してください。Binary Authorization ポリシーとルールについては、Binary Authorization の概要をご覧ください。
前提条件
ユーザー クラスタで Binary Authorization ポリシーの適用を有効にする前に、以下の前提条件を満たしていることを確認してください。
クラスタをフリートに登録する:
gkectl
で作成したクラスタの場合、クラスタは、クラスタ構成ファイルのgkeConnect.projectID
フィールドで指定した Google Cloud プロジェクトに登録されます。このプロジェクトはフリート ホスト プロジェクトと呼ばれます。ユースケース、ベスト プラクティス、例などのフリートの詳細については、フリート管理のドキュメントをご覧ください。Google Cloud プロジェクトで Binary Authorization API を有効にする: フリート ホスト プロジェクトで Binary Authorization サービスを有効にします。
Binary Authorization ポリシー評価者ロールをフリート ホスト プロジェクトに追加する: Binary Authorization ポリシー エバリュエータ ロール(
roles/binaryauthorization.policyEvaluator
)をフリート ホスト プロジェクトの Kubernetes サービス アカウントに付与するには、次のコマンドを実行します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role="roles/binaryauthorization.policyEvaluator"
クラスタがプロキシ サーバーの背後で実行されている場合は、プロキシ サーバーが Binary Authorization API(
binaryauthorization.googleapis.com
)への接続を許可していることを確認してください。この API は、クラスタにデプロイされたイメージの、ポリシーベースのデプロイ検証と制御を提供します。詳細については、プロキシとファイアウォール ルールをご覧ください。
前提条件を満たすと、新しいクラスタを作成ときや既存のクラスタを更新するときに Binary Authorization ポリシーを有効化(または無効化)できます。
クラスタの作成時に Binary Authorization ポリシーを有効にする
Binary Authorization ポリシーの適用は、gkectl
または gcloud CLI を使用して有効にできます。
gkectl
gkectl
を使用してクラスタを作成するときに Binary Authorization を有効にするには:
クラスタを作成する前に、次の例に示すように、ユーザー クラスタ構成ファイルに
binaryAuthorization.evaluationMode
を追加します。... binaryAuthorization: evaluationMode: "project_singleton_policy_enforce" ...
evaluationMode
に指定できる値は以下のとおりです。project_singleton_policy_enforce
: Binary Authorization ポリシーで指定されたルール(プロジェクトのシングルトン ポリシーとも呼ばれます)を Google Cloud プロジェクトに適用してクラスタ上のコンテナ イメージのデプロイを管理します。disabled
: クラスタで Binary Authorization の使用を無効にします。これはデフォルト値です。binaryAuthorization
を省略すると、この機能は無効になります。
クラスタ構成ファイルに必要な他の変更を行い、
gkectl create cluster
コマンドを実行します。
クラスタの作成の詳細については、Google Distributed Cloud のインストールの概要をご覧ください。
既存のクラスタの Binary Authorization ポリシーを有効または無効にする
既存のバージョン 1.28 以降のクラスタを使用している場合は、gkectl
または gcloud CLI を使用して、Binary Authorization をいつでも有効または無効にできます。
gkectl
有効にする手順は次のとおりです。
クラスタ構成ファイルを編集して、
binaryAuthorization
フィールドを追加します。... binaryAuthorization: evaluationMode: "project_singleton_policy_enforce"
クラスタを更新します。
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE \ --force
次のように置き換えます。
ADMIN_CLUSTER_KUBECONFIG
: 管理クラスタの kubeconfig ファイルのパスUSER_CLUSTER_CONFIG_FILE
: ユーザー クラスタの構成ファイルのパス
binauthz-system
Namespace のbinauthz-module-deployment
という名前の Deployment の準備が整うまで待ちます。デプロイの準備が整うと、Binary Authorization は Binary Authorization ポリシー(プロジェクト シングルトン ポリシーとも呼ばれる)で指定されたルールを適用します。このポリシーは、Google Cloud プロジェクトに関連付けられ、コンテナ イメージのデプロイを管理するルールを指定します。
gkectl
を使用したクラスタの更新について詳しくは、クラスタを更新するをご覧ください。Binary Authorization ポリシーとルールについては、Binary Authorization の概要をご覧ください。
無効にするには:
クラスタ構成ファイルを編集し、
binaryAuthorization
セクションを削除するか、evaluationMode
をdisabled
に設定します。... binaryAuthorization: evaluationMode: "disabled"
クラスタを更新します。
gkectl update cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE \ --force
この変更を行ったら、
binauthz-system
Namespace のbinauthz-module-deployment
という名前の Deployment が削除されるまで数分待ちます。
トラブルシューティング
前提条件をすべて完了していない場合、Binary Authorization の構成に問題があることを示す次のようなメッセージが表示されることがあります。
failed to validate Binary Authorization policy (1) Ensure the Binary Authorization API is enabled for your Google Cloud project: gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID (2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account: gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \ --role=roles/binaryauthorization.policyEvaluator