スキップしてコンテンツを表示

VPC またはピアリングされた VPC 内部から Amazon EKS クラスターの API サーバーエンドポイントへのアクセスを保護する方法を教えてください。

所要時間2分
0

Amazon Virtual Private Cloud (Amazon VPC) またはピアリングされた VPC 内部から、Amazon Elastic Kubernetes Service (Amazon EKS) クラスターの API サーバーエンドポイントに保護されたアクセスを行いたいと考えています。

簡単な説明

新しい Amazon EKS クラスターを作成すると、Amazon EKS はマネージド Kubernetes API サーバーにエンドポイントを作成します。デフォルトでは、API サーバーエンドポイントはインターネットに公開されます。このシステムは、AWS Identity and Access Management (IAM) および Kubernetes のロールベースアクセス制御 (RBAC) を併用することで、API サーバーへのアクセスを保護します。詳細については、Kubernetes のウェブサイトで「](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)RBAC 認可を使用する[」を参照してください。

VPC またはピアリングされた VPC 内から Amazon EKS クラスターに保護されたアクセスを行うには、プライベートエンドポイントを構成する必要があります。セキュリティに関するベストプラクティスについては、「セキュリティ上のベストプラクティス」を参照してください。

解決策

ノードと API サーバー間のすべての通信を VPC 内に維持するために、Kubernetes API サーバーへのプライベートアクセスを有効にします。インターネットから API サーバーにアクセスできる IP アドレスを制限することも、API サーバーへのインターネットアクセスを完全に無効化することもできます。

エンドポイントのプライベートアクセスを有効にすると、Amazon EKS クラスターは次のように動作します。

  • クラスター API サーバーへのすべてのトラフィックは、クラスターの VPC またはコネクテッドネットワーク内から送信されます。
  • API サーバーには、インターネットからパブリックアクセスできません。kubectl コマンドはすべて、VPC またはコネクテッドネットワーク内から実行されます。接続オプションについては、「プライベート専用 API サーバーへのアクセス」を参照してください。
  • パブリック DNS サーバーは、クラスターの API サーバーエンドポイントを VPC のプライベート IP アドレスに解決します。

エンドポイントが既存クラスターの VPC 内のプライベート IP アドレスに解決されない場合は、次のいずれかの手順を実行します。

  • パブリックアクセスを有効化した後、再度無効にします。エンドポイントがプライベート IP アドレスに解決されるようにするには、クラスターでこの手順を 1 回のみ実行すると十分です。
  • クラスターを更新します

クラスターで Kubernetes API サーバーエンドポイントへのパブリックアクセスを無効にした場合、API サーバーには、VPC またはコネクテッドネットワーク内からのみアクセスできます。Kubernetes API サーバーエンドポイントには、次のいずれかの方法でアクセスできます。

  • Transit ゲートウェイまたはその他の接続オプションを使用してネットワークを VPC に接続し、コネクテッドネットワーク内のコンピュータを使用します。Amazon EKS コントロールプレーンのセキュリティグループには、コネクテッドネットワークからの受信トラフィックをポート 443 で許可するルールが必要です。
  • Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをクラスターの VPC 内のパブリックサブネットで起動します。次に、SSH を使用してそのインスタンスにサインインして kubectl コマンドを実行します。詳細については、「Session Manager と Amazon EC2 Instance Connect を使用して踏み台ホストにアクセスする」を参照してください。

AWS マネジメントコンソールを使用してクラスター API サーバーのエンドポイントアクセスを変更する

  1. Amazon EKS コンソールを開きます。
  2. クラスター名を選択してクラスター情報を確認します。
  3. [ネットワーク] タブを開き、[更新] を選択します。
  4. クラスターの Kubernetes API サーバーエンドポイントに対するプライベートアクセスを有効にするか無効にするかを選択します。プライベートアクセスを有効にした場合、クラスターの VPC 内から送信される Kubernetes API リクエストはプライベート VPC エンドポイントを使用します。パブリックアクセスを無効にするには、まずプライベートアクセスを有効にする必要があります。
  5. クラスターの Kubernetes API サーバーエンドポイントに対するパブリックアクセスを有効にするか無効にするかを選択します。パブリックアクセスを無効にした場合、クラスターの Kubernetes API サーバーはクラスター VPC 内からのリクエストのみを受信できます。
  6. [更新] を選択します。

AWS CLI を使用してクラスター API サーバーのエンドポイントアクセスを変更する

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

クラスターのエンドポイントへのパブリックアクセスを無効にし、プライベートエンドポイントへのアクセスを有効にするには、次のコマンドを実行します。

aws eks update-cluster-config --name example \
--resources-vpc-config endpointPublicAccess=false,endpointPrivateAccess=true

注: example をクラスター名に置き換えてください。

出力例:

{
    "update": {
        "id": "ec883c93-2e9e-407c-a22f-8f6fa6e67d4f",
        "status": "InProgress",
        "type": "EndpointAccessUpdate",
        "params": [
            {
                "type": "EndpointPublicAccess",
                "value": "false"
            },
            {
                "type": "EndpointPrivateAccess",
                "value": "true"
            }
        ],
        "createdAt": 1565806986.506,
        "errors": []
    }
}

プライベートアクセスを有効にした場合、クラスターの VPC 内から行われる Kubernetes API リクエストはプライベート VPC エンドポイントを使用します。パラメータのデフォルト値は false であり、Kubernetes API サーバーへのプライベートアクセスは無効です。詳細については、update-cluster-config を参照してください。

AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ