Amazon EKS クラスタの接続

注意: この機能は、Cloud Vulnerability Management ライセンスでは使用できません。

Tenable One Cloud Exposure で Amazon EKS クラスタを接続して、アクセス許可、サブスクリプション使用状況、セキュリティ設定に関する情報など、クラスタに関連付けられたすべてのクラウドアイデンティティとリソースに対する完全な可視性とリスク評価を取得します。

統合を完了するまで、クラスターに関連するオブジェクトや構成は分析されず、 Tenable での調査にも利用できません。関連するインベントリビューに各Kubernetesクラスタの リソース同期ステータス が表示されます。これは、Kubernetes API に接続できるかどうかを示す Tenable 、接続に関する潜在的な問題のトラブルシューティングに役立ちます。

要件

モニタリングするクラスタごとに、次の両方の手順を実行します。これらのステップのいずれかまたは両方を実行することが不可能または実用的でない場合、 Tenable は Helm チャートを介してクラスタを接続する代替の接続パスを提供します。

注意: Kubernetes 脅威検出、 アドミッションコントローラーの概要 、センサーベースのワークロード保護を有効にするには、Helm チャートを介してクラスタを接続する チャートを使用してセンサーをインストールする必要があります。これは、すべてのクラウドプロバイダーとクラスタタイプに適用されます。

Tenable ロールクラスターアクセス許可を付与する

次のいずれかの方法を使用して、 Tenable ロールクラスターのアクセス許可を付与します。

AWS コンソールを使用してクラスタのアクセス許可を付与する (推奨)

Tenable IAM ロールに必要なアクセス許可を付与して、クラスタへのTenableアクセスを提供します。これを行うには、認証モードを EKS API および ConfigMap に設定し、IAM アクセスエントリを設定してから、適切なアクセスポリシーを割り当てます。

注意:

  • リソースのアクセス許可セットがより制限されたロールを使用することもできますが、この場合、今後関連するアクセス許可が追加されると手動で追加しなければなりません。
  • IAM ロールは、 Tenable 読み取りアクセス許可のみを付与します。

AWS コンソールを使用してクラスタのアクセス許可を付与する方法

  1. AWS マネジメントコンソールにログインします。
  2. Elastic Kubernetes Service に移動します。
  3. 左側のメニューで、[Clusters] をクリックします。
  4. 関連するクラスタを選択します。
  5. [アクセス] タブをクリックします。
  6. アクセス設定認証モードとして、 EKS API または EKS API と ConfigMap を選択します。

    注意: Amazon は、今後のリリースで ConfigMap を廃止する予定です。詳細については、公式のAWS ドキュメントを参照してください。
  7. IAMアクセスエントリを設定するには:
    1. [アクセスエントリの作成] をクリックします。
    2. IAM プリンシパル: 統合プロセス中に作成された IAM ロール ARN を選択します。
    3. [次へ] をクリックします。
  8. アクセスポリシーを追加するには
    1. ポリシー名: ドロップダウンリストから AmazonEKSAdminViewPolicy を選択します。
    2. アクセス範囲: [クラスタ] を選択します。
    3. [次へ] をクリックします。
  9. [作成] をクリックします。

CLI を使用したクラスタのアクセス許可の付与

Tenable IAM ロールのアクセス許可をクラスタに付与して、クラスタへのTenableアクセスを提供します。このために、Tenable IAM ロールを EKS クラスタ ConfigMap に追加し、クラスタロールとクラスタロールバインディングを作成します。以下の手順では、kubectl コマンドを使用してこれを行う方法を示していますが、eksctl またはその他の方法を使用することもできます。詳細は、 Amazon EKS のドキュメントで説明されているガイドラインに従ってください。

注意:

  • リソースのアクセス許可セットがより制限されたロールを使用することもできますが、この場合、今後関連するアクセス許可が追加されると手動で追加しなければなりません。
  • IAM ロールは、 Tenable 読み取りアクセス許可のみを付与します。

前提条件

  • このアクションを実行するために必要なアクセス許可があることを確認してください。
  • 次のツールがインストールされていることを確認します。
    • AWS CLI
    • kubectl

EKS クラスタの接続手順

  1. AWS CLI から次のコマンドを実行します。

    aws eks --region {your_region} update-kubeconfig --name {your_cluster_name}

    ここで、 {your_region} は AWS リージョンを表し、 {your_cluster_name} は EKS クラスタの名前を表しています。

  2. 次のコマンドを実行してください。

    cd ~/.kube

  3. クラスターロール YAML ファイルを作成します。
    • 次のコマンドを実行してファイルを編集します。

      vim {clusterRole}.yaml

      ここで、 {clusterRole} はファイルに付けるために選択した名前です。

    • 以下の clusterRoleを追加します。

      コピー

      YAML

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: ermetic-kube-connector-cluster-role
      rules:
        - apiGroups: ["*"]
          resources: ["*"]
          verbs: ["get", "list", "watch"]
  4. クラスターロールバインディング YAML ファイルを作成します。
    • 次のコマンドを実行してファイルを編集します。

      vim {clusterRoleBinding}.yaml

      ここで、 {clusterRoleBinding} はファイルに付けるために選択した名前です。

    • 以下の clusterRoleBindingを追加します。

      コピー

      YAML

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: ermetic-kube-connector-cluster-role-binding
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: ermetic-kube-connector-cluster-role
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: Group
        name: ermetic-kube-connector
  5. 次のコマンドを実行して、作成した clusterRole/clusterRoleBinding をクラスタに適用します。

    kubectl apply -f ./{clusterRole}.yaml
    kubectl apply -f ./{clusterRoleBinding}.yaml

    ここで、 {clusterRole}と {clusterRoleBinding} は YAML ファイルに付けた名前です。

  6. (オプション)次のコマンドを実行して、 clusterRole/clusterRoleBinding が適用されていることを検証します。

    kubectl get clusterroles
    kubectl get clusterrolebindings

    関連する値が存在することを確認します。たとえば、次の画像は Tenable clusterRole 値を示しています。

    kubectl output listing cluster roles, with the connector cluster role highlighted

  7. 次のコマンドを実行して aws-auth ConfigMapを編集します。

    kubectl edit configmap/aws-auth --namespace kube-system

  8. 以下のように、 Tenable IAM ロールの詳細を mapRoles セクションに追加します。

    重要: 追加する新しい groups 要素が、フォーマットなど、既存のグループと同じレベルに適切に配置されていることを確認します。
    コピー

    YAML

    mapRoles: |
                ...
          <existing groups>
                ...
        - groups:
          - ermetic-kube-connector
          rolearn: arn:aws:iam::{111122223333}:role/{tenable-role-name}
          username: ermetic-kube-connector

ここで、 {111122223333} と {tenable-role-name} は Tenable ロール ARN に関連する値です。

以下の例は、mapRoles セクションのコンテキストで Tenable IAM ロールの詳細を示しています。

An aws-auth ConfigMap mapRoles section with the connector's IAM role

Tenable へのネットワークアクセスを許可する

クラウドサイバーエクスポージャーがクラスタにアクセスするには、クラスタエンドポイントをパブリックにアクセス可能にし、関連する許可が必要な Tenable IP アドレスする必要があります。

ネットワークアクセスを許可するには

  1. AWS 管理コンソールで、[EKS > Clusters] に移動します。
  2. 対象の クラスタ名をクリックします。
  3. [ネットワーク] タブに移動し、[ネットワークの管理] をクリックします。クラスタエンドポイントへのアクセスの設定方法によっては、次のように設定の編集が必要になる場合があります。
    • パブリック。 アクセスがパブリックに設定されている場合、Tenable はクラスタにアクセスできますが、クラスタにアクセスするためのセキュリティのベストプラクティスには従いません。代わりに、アクセスを パブリックとプライベートに設定し、承認済みネットワークを Tenable に関連付けられているものなど、特定の IP アドレスに制限する必要があります。
    • パブリックとプライベート。パブリックが選択されている場合は、[Advanced settings] (詳細設定) をクリックし、[CIDR block] (CIDR ブロック) で、Tenableリージョンに関連付けられているすべての 許可が必要な Tenable IP アドレスを追加します。
    • プライベート。 このようなクラスタを Tenable 監視する場合は、クラスタをパブリックに切り替えるか、パブリックとプライベートに切り替えて、パブリックに公開する必要があります。
  4. 完了したら、[変更の保存] をクリックします。