オンボーディングKubernetes クラスタ
Kubernetes クラスタをオンボードしてCloudGuardできます。処理が完了すると、「CloudGuardアセット」ページにクラスタ、ノード、ポッド、および他の追加リソースが表示されます。その後、コンプライアンス評価を実行し、Runtime Protection、Image Assurance などの追加のセキュリティ機能にデータを使用することができます。
クラスタは、オンプレミスホストまたはクラウド環境(Azure 上のAKS、AWS 上のEKS、GCP クラウド上のGKE などの管理対象Kubernetes 環境を含む) に存在できます。
オンボーディングプロセスの一環として、CloudGuard Agent がクラスタにデプロイされます。CloudGuard は、暗号化された情報をインターネット経由でCloudGuard サーバに送り返します。
Kubernetes のバージョンとコンテナ要件については、Kubernetesコンテナ を参照してください。
クラスタを手動でオンボーディングする
以下の手順に従って、Kubernetes クラスタを手動でオンボードしてCloudGuardします。
CloudGuard ポータルで、Assets > Environments を開きます。
Get Started with Kubernetes をクリックするか、または右上からADD NEW > Kubernetes Cluster / OpenShift / Tanzu を選択します。
後でCloudGuard に表示されるように、クラスタの名前を入力します。
画面上の指示に従って、次の手順を実行します。
次のいずれかの方法でサービスアカウントを定義します。
関連付けられたAPI キーを持つ既存のサービスアカウントを選択します。
サービスアカウントを手動で入力する
Add Service Account をクリックして新しいアカウントを作成します。
エージェントがデプロイされるKubernetes ネームスペースの名前を入力するか、デフォルト名- checkpoint を保持します。
デフォルトでKubernetes クラスタに必要なモニタリングとセキュリティチェックの種類を選択します。これらの機能は後で追加できます。専用ページの各機能の詳細については:
ポスチャー管理- 詳細については、ポスチャー管理 (必須機能) を参照してください。
Image Assurance - 詳細は、Image Assurance を参照してください。
Admission Control - 詳細は、アドミッションコントロール を参照してください。
実行時保護- 詳細は、Kubernetes ランタイム保護 を参照してください。
Threat Intelligence - 詳細については、インテリジェンス を参照してください。
Next をクリックすると、次の手順に進みます。
オンボードクラスタが関連付けられるOrganizational Units(OU) を選択します。Org Unit が選択されていない場合、ルート(最上位) ユニットが使用されます。
Nextをクリックします。
画面の指示に従って、Helm を適用します。または、非Helm の手順に従ってエージェントをデプロイすることもできます。これにより、kubectl コマンドを使用して展開用のYAML ファイルが生成されます。
Nextをクリックします。
展開ステータスを確認します。エージェントがオンラインになると、ステータスは動的に更新されます。
Kubernetes クラスタが正常に作成されました
エージェントが通信を開始するのを待っている
Finish ボタンをクリックすると、検証をスキップできます。
クラスタとエージェントステータスに従ってデプロイの完了を待つか、Finish をクリックして処理をスキップします。
CloudGuardは以下を通知します。
エージェントがデプロイされた後、CloudGuard はエージェントを介してクラスタにアクセスして、アセットに関する情報を取得し、それと同期します。これには、クラスタにイメージをダウンロードするのに必要な時間とクラスタ内のアセットの数に基づいて、数分かかります。
Onboarding Summary(オンボーディングサマリ)ページは、クラスタステータスの変更とともに自動的に更新されます。
クラスタ状態
クラスタステータスの使用可能なオプション:
Pending - CloudGuardがエージェントから通信を受けていません。
Initializing - CloudGuard は一部のエージェントから通信を受信しています。進行状況バーには、稼働中のエージェントと準備完了のエージェントの数が表示されます。
注 - このステートでは、実行中のPod の数が10 分間変更されない場合、インジケーターは一時停止し、ステータスはTIME OUT に変わります。この場合、クラスタのエージェントステータスを確認して、問題がないことを確認します。たとえば、リソース(メモリまたはCPU)がないためにエージェントが停止する可能性があります。問題を解決したら、検証を再開するか、検証プロセス全体をスキップできます。
Error - Error状態のエージェントがあります。Finish をクリックしてプロセスを完了します。クラスタページに移動して、エラー状態のエージェントを確認し、問題がないかKubernetes ログを参照できます。
すべてのエージェントが実行されている場合、クラスタのステータスはSUCCESS に変わり、オンボーディングプロセスは正常に終了します。
エージェントステータス
クラスタページでは、各機能について、そのエージェントのステータスを確認できます。
Pending - エージェントはCloudGuardと通信したことがない。
注 - デーモンセットエージェントには制限があります。クラスタステータスの計算中は、許容値の設定は考慮されません。除外されたノードからのエージェントはPending と見なされ、クラスタの誤ったエラー状態になる可能性があります。
Initializing - オンラインになり、CloudGuardポータルとの通信を開始するエージェントの状況。エージェントには、セルフテストの成功を報告する期間が限られています。エージェントがそれを時間内に報告しない場合、ステータスはタイムアウトのためにError に変更されます。
Warning - 古いイメージに基づいている間に、初期化が正常に完了したエージェントのステータス。この問題を解決する方法については、 のアップグレードを参照してください。
Error - 自己テストに失敗した、エラーメッセージを送信した、または1 時間以上接続が失われたエージェントのステータス。
Pending cleanup - データを送信するエージェントがまだある無効になっている機能は、クリーンアップ保留状態で表示されます。
自動化を使用したクラスタのオンボーディング
次の手順に従って、コマンドラインからオンボーディングプロセスを自動化します。
これらの環境変数$API_KEY、$API_SECRET、$CLUSTER_NAME を作成または更新します。ここで、API キーとシークレットはCloudGuardポータルで生成されます( を参照)。
CloudGuard でKubernetes アカウントを作成するには、次のコマンドを実行します。
curl -s -X POST https://api.us1.cgn.portal.checkpoint.com/v2/kubernetes/account --header 'Content-Type: application/json' --header 'Accept: application/json' -d "{\"name\" : \"$CLUSTER_NAME\"}" --user $API_KEY:$API_SECRET)
レスポンスからクラスタ ID を抽出します。
CLUSTER_ID=$(echo $CREATION_RESPONSE | jq -r '.id')
必要な機能を有効にします。
コピーcurl -X POST https:// api.us1.cgn.portal.checkpoint.com/v2/kubernetes/account/$CLUSTER_ID/imageAssurance/enable --user $API_KEY:$API_SECRET curl -X POST https:// api.us1.cgn.portal.checkpoint.com/v2/kubernetes/account/$CLUSTER_ID/admissionControl/enable --user $API_KEY:$API_SECRET curl -X POST https:// api.us1.cgn.portal.checkpoint.com/v2/kubernetes/account/$CLUSTER_ID/runtimeProtection/enable --user $API_KEY:$API_SECRET
各クラスタで次のコマンドを実行します。
コピーhelm install asset-mgmt cloudguard --repo https://raw.githubusercontent.com/CheckPointSW/charts/master/リポジトリ/ --set-string credentials.user=$API_KEY --set-string credentials.secret=$API_SECRET --set-string clusterID=$CLUSTER_ID --set addons.imageScan.enabled={true|false} --set addons.admissionControl.enabled={true|false} --set addons.runtimeProtection.enabled={true|false} --namespace $NAMESPACE
注 - *.enabledフラグは、対応する機能を有効にしたくない場合は、falseに設定するか省略することができます。 |
非Helm 自動化の場合は、次のコマンドをステップ5 で実行します。
kubectl run cloudguard-install --rm --image alpine/helm --tty --stdin --quiet --restart=Never --command – helm template asset-mgmt cloudguard --repo https://raw.githubusercontent.com/CheckPointSW/charts/master/リポジトリ/ --set credentials.user=$API_KEY --set credentials.secret=$API_SECRET --set clusterID=$CLUSTER_ID --set addons.imageScan.enabled={true|false} --set addons.admissionControl.enabled={true|false} --set addons.runtimeProtection.enabled={true|false} --namespace $NAMESPACE --set containerRuntime=containerd > cloudguard-install.yaml kubectl apply -f cloudguard-install.yaml
クラスタでDocker またはCRI-O ランタイム環境を使用している場合は、
containerRuntime
フラグを次のように変更します。--set containerRuntime=docker
または--set containerRuntime=cri-o
.クラスタプラットフォームがOpenShift 4+ またはTanzu の場合は、出力リダイレクトの前に次を追加します。
--set platform=openshift
または --set platform=tanzu
例
#!/bin/bash # API キー、API シークレット、およびクラスタの環境変数を作成します。export API_SECRET=372db3-bf46-cb6dfb4261efb317 export API_NAME=auto-クラスタ export NAMESPACE=checkpoint IMAGE_SCAN_ENABLED=true export ADMISSION_CONTROL_ENABLED=true export RUNTIME_PROTECTION_ENABLED=true # クラスタ export CREATION_RESPONSE=$(curl -s -X POST https://api.cgn.portal.checkpoint.com/v2/kubernetes/account/ --header 'Content-header: application/json' --header 'Accept: application/json' \-d "\"$クラスタ\$API_KEY=$(echo $API_SECRET) export $API_KEY | " '.id') curl -api.us1.cgn.portal.checkpoint.com/v2/kubernetes/account/enable --user $API_SECRET curl -https://api.us1.cgn.portal.checkpoint.com/v2/kubernetes/account/$クラスタ_ID/enable --user $API_KEY:$SE CRET # 指定されたネームスペースがすでに存在する場合、helm export namespace # checkpoint cloudguard --set-string credentials.user=$set-string credentials.secredentials=$API_set クラスタID=$クラスタ-set addons.imageScan.enabled=$IMAGE_SCAN_ENABLED --set addons.enabled=$ADMISSION_CONTROL_ENABLED --set addons.runtimeProtection.enabled=$RUNTIME_PROTECTION_ENABLED --namespace # クラスタ curl -https://api.us1.cgn.portal.checkpoint.com/v2/kubernetes/account/$クラスタ_ID/AccountSummary -$API_KEY:$API_SECRET
エージェントのアップグレード
合意済みの仮定:
環境変数$API_KEY、$API_SECRET、$CLUSTER_NAME、$NAMESPACE は、オンボーディング時と同じ値になります。
Image Assurance およびAdmission Control は有効です。
Helm 3 がインストールされているエージェントの場合は、次のコマンドを使用してすべてのエージェントを最新バージョンにアップグレードします。
helm upgrade asset-mgmt cloudguard --repo https://raw.githubusercontent.com/CheckPointSW/charts/master/リポジトリ/ --set-string credentials.user=$API_KEY --set-string credentials.secret=$API_SECRET --set-string clusterID=$CLUSTER_ID --set addons.imageScan.enabled={true|false} --set addons.admissionControl.enabled={true|false} --set addons.runtimeProtection.enabled={true|false} --namespace $NAMESPACE
エージェントのアンインストール
オンボーディング中に、CloudGuard はエージェントのアンインストールに使用するcloudguard-install.yaml ファイルを生成します。
ヘルムあり:
|
kubectl の場合:
|
注 - エージェントをアンインストールした後に再度インストールするには、アップグレード手順ではなく、 する手順に従ってください。 |
トラブルシューティング:ゲートウェイの背後にあるクラスタ
HTTPS インスペクションを使用して、クラスタからインターネットにSecurity Gateway を介してトラフィックが渡される場合は、エージェントのカスタマーCA (認証局) 証明書を設定する必要があります。
カスタマーBase64 PEM エンコードCA 証明書を関連するネームスペースのconfigmap に配置します。
例:
kubectl -n <namespace>create configmap ca-store --from-file=custom_ca.cer=<PATH_TO_CA_CERTIFICATE_FILE>
以下のように、対応する場所のコンテナにファイルをマウントします。
コンテナ
ポッド
ロケーション
インベントリ
インベントリ
custom/custom_ca.cer
エンジン
イメージスキャンエンジン
/etc/ssl/cert.pem
フルエントビット
imagescan-engineとimagescan-daemon
/etc/ssl/certs/ca-certificates.crt