GKE on Bare Metal の Binary Authorization は、Binary Authorization のホストされたデプロイ時の適用をオンプレミス クラスタに拡張する Google Cloud の機能です。GKE on Bare Metal での Binary Authorization の主なユースケースは、ワークロードの保護ですが、Binary Authorization はすべてのクラスタタイプで機能します。このガイドの手順に沿って、Google Cloud プロジェクトで構成した Binary Authorization ポリシーの適用ルールをクラスタに適用してください。Binary Authorization ポリシーとルールについては、Binary Authorization の概要をご覧ください。
前提条件
クラスタで Binary Authorization ポリシーの適用を有効にする前に、以下の前提条件を満たしていることを確認してください。
クラスタをフリートに登録する:
bmctl
で作成したクラスタは、クラスタ構成ファイルの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 ポリシーの適用は、bmctl
または gcloud CLI を使用して有効にできます。
bmctl
bmctl
を使用してクラスタを作成するときに Binary Authorization を有効にするには:
クラスタを作成する前に、次の例に示すように
spec.binaryAuthorization.evaluationMode
をクラスタ構成ファイルに追加します。... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
evaluationMode
に指定できる値は以下のとおりです。PROJECT_SINGLETON_POLICY_ENFORCE
: Binary Authorization ポリシーで指定されたルール(プロジェクトのシングルトン ポリシーとも呼ばれます)を Google Cloud プロジェクトに適用してクラスタ上のコンテナ イメージのデプロイを管理します。DISABLE
: クラスタで Binary Authorization の使用を無効にします。これがデフォルト値です。binaryAuthorization
を省略すると、この機能は無効になります。
クラスタ構成ファイルに必要な他の変更を行い、
bmctl create cluster
コマンドを実行します。
クラスタを作成する詳細については、クラスタの作成の概要をご覧ください。
gcloud CLI
ユーザー クラスタを作成して Binary Authorization を有効にするには、
gcloud container bare-metal clusters create
コマンドを実行するときに--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
フラグを追加します。これは、Binary Authorization ポリシーで指定されたルール(プロジェクト シングルトン ポリシー)を適用するユーザー クラスタを作成します。このポリシーは、Google Cloud プロジェクトに関連付けられ、コンテナ イメージのデプロイを管理するルールを指定します。gcloud CLI を使用してユーザー クラスタを作成する方法については、GKE On-Prem API クライアントを使用してクラスタを作成するをご覧ください。Binary Authorization ポリシーとルールについては、Binary Authorization の概要をご覧ください。
既存のクラスタの Binary Authorization ポリシーを有効または無効にする
既存のバージョン 1.16 以降のクラスタを使用している場合は、bmctl
または gcloud CLI を使用していつでも Binary Authorization を有効または無効にできます。
bmctl
有効にするには:
クラスタ構成ファイルを編集して
binaryAuthorization
フィールドを追加します。... --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic spec: type: user ... binaryAuthorization: evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
クラスタを更新します。
bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
次のように置き換えます。
CLUSTER_NAME
: 更新するクラスタの名前。CLUSTER_KUBECONFIG
: クラスタの kubeconfig ファイルへのパス。
binauthz-system
Namespace のbinauthz-module-deployment
という名前の Deployment の準備が整うまで待ちます。デプロイの準備が整うと、Binary Authorization は Binary Authorization ポリシー(プロジェクト シングルトン ポリシーとも呼ばれる)で指定されたルールを適用します。このポリシーは、Google Cloud プロジェクトに関連付けられ、コンテナ イメージのデプロイを管理するルールを指定します。
bmctl
を使用してクラスタを更新する方法の詳細については、クラスタの更新をご覧ください。Binary Authorization ポリシーとルールについては、Binary Authorization の概要をご覧ください。
無効にするには:
この機能をオフにするには、
evaluationMode
をDISABLED
に設定するか、クラスタ仕様からbinaryAuthorization
セクションを削除します。この変更を行ったら、binauthz-system
Namespace のbinauthz-module-deployment
という名前の Deployment が削除されるまで数分待ちます。
gcloud CLI
既存のクラスタに対して Binary Authorization を有効にするには、
gcloud container bare-metal clusters update
コマンドを実行するときに--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
フラグを加えます。これにより、ユーザー クラスタが更新され、Binary Authorization は Binary Authorization ポリシー(シングルトン ポリシー)で指定されたルールを適用します。このポリシーは、Google Cloud プロジェクトに関連付けられ、コンテナ イメージのデプロイを管理するルールを指定します。gcloud CLI を使用してユーザー クラスタを更新する詳細については、gcloud CLI リファレンスの gcloud container bare-metal clusters update をご覧ください。Binary Authorization ポリシーとルールについては、Binary Authorization の概要をご覧ください。
既存のクラスタの Binary Authorization を無効にするには、
--binauthz-evaluation-mode=DISABLED
フラグを指定してgcloud container bare-metal clusters update
コマンドを実行します。
トラブルシューティング
前提条件をすべて完了していないと、問題を早期に把握できない場合があります。Binary Authorization が Pod 作成リクエストへの応答に失敗する場合は、ReplicaSet の status.conditions
を確認してください。以下のようなメッセージは、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