Google Distributed Cloud の Binary Authorization を使用すると、Binary Authorization のホストされたデプロイ時の適用をオンプレミス クラスタに拡張できます。Binary Authorization は、主にワークロードの保護に使用されますが、すべてのクラスタタイプで機能し、 Google Cloud プロジェクトで構成されたポリシー適用ルールを適用します。ポリシーとルールの詳細については、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-systemNamespace のbinauthz-module-deploymentという名前の Deployment の準備が整うまで待ちます。デプロイの準備が整うと、Binary Authorization は Binary Authorization ポリシー(プロジェクト シングルトン ポリシーとも呼ばれる)で指定されたルールを適用します。このポリシーは、Google Cloud プロジェクトに関連付けられ、コンテナ イメージのデプロイを管理するルールを指定します。
bmctlを使用したクラスタの更新について詳しくは、クラスタを更新するをご覧ください。Binary Authorization ポリシーとルールについては、Binary Authorization の概要をご覧ください。
無効にするには:
この機能をオフにするには、
evaluationModeをDISABLEDに設定するか、クラスタ仕様からbinaryAuthorizationセクションを削除します。この変更を行ったら、binauthz-systemNamespace の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 コンテナ ベアメタル クラスタの更新 をご覧ください。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