PAM360のKubernetesとの統合

ManageEngineの統一特権アクセス管理製品であるPAM360は、ソフトウェアのオートメーションを促進し、アプリケーションの効果的なスケーリングと管理ができるオープンソースのコンテナオーケストレーション・ツールであるKubernetesと統合されます。

本書の終わりには、以下について学ぶことになります:

  1. 統合の主な利点
  2. 統合はどのように機能しますか?
  3. Kubernetes統合のPAM360での構成
  4. シークレットの取り込みと管理
  5. シークレットのリソースへのマッピング
  6. 制限
  7. 用語集

1.統合の主な利点

この統合では、Kubernetesクラスタに保存されたシークレットを取り込み、PAM360インターフェイスで管理できます—複数のKubernetesクラスタから取得したシークレットを取り込み管理し、および定期的にローテーションできます。統合により、エンタープライズで使用するKubernetesシークレットのコラボレーション管理を実現できます。取り込まれたシークレットがPAM360リポジトリに追加されると、クラスタ同期によるシークレットの更新や、秘密鍵のローテーション、Kubernetesリソースでのアクセスコントロールの実行による機密シークレットへのアクセスコントロール等、さまざまな操作を通じて、それらを管理できます。PAM360 は、リポジトリに保存されているシークレットに対して実行されたすべての操作に関する広範な監査証跡を記録します。

2.統合はどのように機能しますか?

Kubernetes-PAM360統合は、API応答を利用して、Kubernetesサーバーからシークレットを取り込み、PAM360リポジトリにリソースとして取り入れ、そこで管理および共有できます。複数の名前空間クラスタのシークレットは、PAM360から取り込み、管理できます。

PAM360は、異なるタスク用に呼び出された各種Kubernetesクラスタのシークレットを検出および保存できるリポジトリのように機能します。各名前空間から取り込まれたKubernetesシークレットは、リソース内にアカウントとして追加され、リソースタイプ「Kubernetes」に保存されます。アカウントは、ダウンロード可能なファイルから利用可能です。

Example of a Kubernetes Secret

メモ:シークレットファイル(.json)には、お使いのKubernetes構成によっては、単一または複数のキーが含まれている場合があります。

3.Kubernetes統合のPAM360での構成

前提条件

  1. Kubernetesサーバー証明書をPAM360にインポート
    1. Kubernetesが実行されているホストのSSL証明書をコピーし、パス<PAM360インストールフォルダ>/binに貼り付けます。
    2. <PAM360インストールフォルダ>/binディレクトリから、以下のコマンドを実行します:importCert.bat <上記サーバー証明書の名前>
    3. Kubernetesサーバー証明書がPAM360証明書ストアに正常に追加されました。

3.1 YAMLファイルをPAM360からダウンロードする手順

  1. [管理者] >> [DevSecOps] >> [コンテナプラットフォーム]の順に移動します。
  2. 統合ページで、Kubernetesオプションの[構成]をクリックします。
  3. 構成プロセスを開始するには、初めに、YAMLファイルをPAM360インターフェイスからダウンロードする必要があります。YAMLファイルには、Kubernetesサーバーのマスターノードへの適用が必要なコマンドが含まれます。このウインドウで、[YAMLファイルをダウンロード]をクリックして、継続します。

3.2 Kubernetesサーバーにサービスアカウントトークンを首都k鵜する手順

  1. YAMLファイルを、Kubernetesサーバーが実行されているマシンに移動します。以下のコマンドを実行して、YAML構成ファイルを呼び出します。

    kubectl apply -f pam360-config.yaml

  2. このコマンドは、PAM360 とマスター ノード間の通信を認証するための新しいサービス トークンを作成します。
  3. 次に、以下のコマンドを実行して、サービスアカウントトークンをKubernetesサーバーから取り込みます:

    kubectl get secrets/pam360-secret -o jsonpath='{.data.token}'

  4. サービス アカウント トークンが生成されます。デフォルトでは、トークンは Base64 でエンコードされた形式になります。このサービスアカウントトークンをコピーして、PAM360で統合を構成します。

3.3 統合をPAM360インターフェイスで構成する手順

  1. 次に、PAM360インターフェイスをもう一度開き、[管理者] >> [DevSecOps] >> [コンテナプラットフォーム]の順に移動し、[Kubernetes]をクリックします。
  2. このウインドウで、以下の属性を追加して、新しいKubernetesクラスタをPAM360に作成します:
    1. クラスタ名
    2. Kubernetesサーバーが実行されているマシンのホスト名
    3. 前の手順のサービスアカウントトークン。
  3. [テスト]をクリックします。この操作では、クラスタ構成をテストし、PAM360とKubernetesの間の通信が確立できていることを確認します。PAM360は、接続を確立する前に、3つのチェックを実行します:
    1. Kubernetesサーバーが実行されているホストマシンとの通信ができるかを確認します。
    2. Kubernetesクラスタと通信できるかを確認します。
    3. サービスアカウントトークンを認証します。
  4. [保存]をクリックして、構成を完了します。構成詳細は、テストが正常に完了した場合のみ保存できます。

4.シークレットの取り込みと管理

構成ファイルを保存したら、次の手順で、シークレットをKubernetesクラスタから取りl込みます。以下の手順に従ってください:

  1. 表示される取り込まれたシークレットウインドウに、名前空間のリストと対応するシークレットが表示されます。必要な名前空間または個別シークレットを選択して、[保存]をクリックして、シークレットの取り込みを開始します。
  2. Kubernetesクラスタページで、クラスタ名をクリックして、名前空間とシークレットウインドウに名前空間とクラスタに関連するすべての詳細を表示します。
  3. 入力したKubernetesサーバー詳細がある新しいクラスタが、Kubernetesサーバーと、実行する操作とあわせて、このページに表示されます。クラスタで実行できる操作は主に4つあります:
    1. 取り込む
    2. 手動更新(または)編集
    3. 削除
    4. シークレットを同期

i. 取り込む

[取り込む]アイコンをクリックして、名前空間をKubernetesサーバーから取り込みます。クラスタは、名前空間名の形式で名前が浸かられます - クラスタの作成中に指定したクラスタ名です。

ii.手動更新(または)編集

[編集]アイコンをクリックして、Kubernetes構成詳細を変更します。

iii.削除

[削除]をクリックして、クラスタを削除します。追加して戻すには、手順3に従って、再構成する必要があります。削除操作をすると、シークレット関連のみ削除され、このクラスタで作成したリソース(リソースタブでまだ利用可能)は削除されませんので、注意してください。競合の可能性を避けるために、リソースを手動で削除することをお勧めします。

iv.シークレットを同期

このオプションを使って、すでにPAM360に追加されたKubernetesクラスタから取り込まれたシークレットのリストを更新します。つまり、新しいシークレットセットがKubernetesサーバーのクラスタに追加された場合、同期オプションにより、PAM360での初回取り込み操作後に追加された追加シークレットをすべて取り込まれ、クラスタ情報をKubernetesサーバーと同期されます。

リアルタイムシナリオ

ジョンは重要なデータベースを管理するIT管理者です。認証に必要なデータベースキーは、安全に保管されるべき重要な要素です。そのため、ジョンはデータベースキーを複数のKubernetesシークレット内に保存します。今、彼はKubernetesシークレットを一元管理するための安全なリポジトリが必要です。

ここでPAM360とKubernetesの統合が役立ちます。この統合により、ジョンは必要に応じてKubernetesクラスターに保存されたシークレットを選択して取得できます。操作中に、PAM360は重要なシークレットキーを含むJSONファイルを取得し、それらをリポジトリ内のファイルストアに保存します。PAM360はシークレットファイルに含まれるシークレットキーをエンコードします。この製品は、複数のKubernetesクラスターからシークレットを取得および保存することができます。Kubernetesシークレットには、Kubernetesサーバー外の他のシステムと対話するためにシステムが使用するマシンIDが含まれています。この統合により、PAM360はシークレット管理のプロセスを自動化します。

ジョンはまた、PAM360インターフェースからパスワードリセット操作を通じてKubernetesシークレットをローテーションすることができます。これを達成するために、彼はKubernetesシークレットをPAM360の既存リソースにマッピングし、リソースのパスワードを変更します。この操作により、Kubernetesから取得したJSONファイルに保存されたシークレットキーがローテーションされます。ただし、シークレットキーは自動的にKubernetesサーバー内で直接更新されるわけではありません。

5.シークレットのリソースへのマッピング

取り込んだシークレットの管理を開始するには、それらをPAM360リポジトリのリソースにマッピングします。

  1. シークレットがy取り込まれたら、PAM360が、以下の命名規約で個別リソースを作成します:名前空間-クラスタ名.リソースタブに移動し、PAM360が作成したすべてのKubernetesリソースを表示します。
  2. シークレットは、取り込まれる元の名前空間とKubernetesクラスタに基づいて、リソースでカテゴライズされます。
  3. Kubernetesシークレットを、あなたが所有する、またはあなたと共有するリソースタイプのいずれかのリソースと関連づけることができまうs。
  4. リソースを選択し、[アカウント操作] >> [シークレットを関連づけ]の順に進みます
  5. シークレットを関連づけウインドウで、ドロップダウンからリソース名、シークレット名と園氏―クレットに属する秘密鍵を選択します。[マッピング]をクリックして、保存します。選択したシークレットと秘密鍵がアカウントと正常に関連づけられました。複数のシークレットをリソースにマッピングすることができます。
  6. マッピングが完了したら、シークレットをリソースからいつでも管理できます。マッピングの詳細を表示するには、Kubernetes リソースを開いて、[マップされたリソースの詳細]をクリックします。このウインドウには、このKubernetesクラスタに属するシークレットのすべてのリストと、マッピングされる先のリソースが表示されます。

メモ:マッピングされたリソースからトリガーされるパスワードリセット操作により、そこにマッピングされた秘密鍵のすべてが変更され、変更内容はKubernetesサーバーに反映されますので、注意してください。ただし、PAM360では、Kubernetesクラスタ内で実行されているサービスのパスワードはリセットされません。

6.制限

  1. 各シークレットをリソースに手動でマッピングし、PAM360リポジトリから管理する必要があります。新しいシークレットがオンデマンド取り込みにより、Kubernetesサーバーから同期されると必ず、シークレットをリソースタブからリソースに手動でマッピングする必要があります。
  2. PAM360のリモートパスワードリセットサポートは、Kubernetesサーバー内で実行されているサービスには拡張されません。
  3. 統合は一方向同期のみ実行します—PAM360は、Kubernetesクラスタに追加された追加シークレットを取り込むことはできますが、Kubernetesサーバーからすでに削除されたシークレットを削除することはできません。
  4. PAM360は、Kubernetesサーバーから自動的にシークレットを取り込む自動同期スケジュール設定は行いません。

7.用語集

用語 説明

コンテナ

ソフトウェアおよび依存関係がすべて含まれるポータブルな実行画像。

シークレット

パスワード、トークンまたはキー等、機密データを含むオブジェクト。

クラスタ

コンテナ化されたアプリケーションを実行する、ノードと呼ばれるワーカーマシンのセット。すべてのクラスタには、少なくとも1つのワーカーノードがあります。

Kubectl

Kubernetesクラスタのコントロールプレーンと、Kubernetes APIを使って通信するのに使うコマンドラインツール。

名前空間

名前空間は、単一のKubernetesクラスタ内にあるリソースのグループを分離するのに使う抽象概念です。