내용으로 건너뛰기

VPC 또는 피어링된 VPC 내에서 Amazon EKS 클러스터 API 서버 엔드포인트에 안전하게 액세스하려면 어떻게 해야 합니까?

3분 분량
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 웹 사이트에서 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 주소로 확인되도록 클러스터에서 이 작업을 한 번만 수행하면 됩니다.
  • 클러스터를 업데이트합니다.

클러스터의 Kubernetes API 서버 엔드포인트에 대한 퍼블릭 액세스를 비활성화하면 VPC 또는 연결된 네트워크 내에서만 API 서버에 액세스할 수 있습니다. 다음 방법 중 하나로 Kubernetes API 서버 엔드포인트에 액세스할 수 있습니다.

  • 전송 게이트웨이 또는 기타 연결 옵션을 사용하여 네트워크를 VPC에 연결한 다음, 연결된 네트워크의 컴퓨터를 사용합니다. Amazon EKS 컨트롤 플레인 보안 그룹에 연결된 네트워크의 포트 443에서 수신 트래픽을 허용하는 규칙이 포함되어 있는지 확인하십시오.
  • 클러스터 VPC의 퍼블릭 서브넷에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작합니다. 그런 다음, SSH를 사용해 해당 인스턴스에 로그인하여 kubectl 명령을 실행합니다. 자세한 내용은 Session Manager 및 Amazon EC2 Instance Connect를 사용하여 배스천 호스트에 액세스를 참조하십시오.

AWS Management Console을 사용하여 클러스터 API 서버 엔드포인트 액세스 수정

  1. Amazon EKS 콘솔을 엽니다.
  2. 클러스터 정보를 표시할 클러스터 이름을 선택합니다.
  3. 네트워킹 탭을 연 다음, 업데이트를 선택합니다.
  4. 클러스터의 Kubernetes API 서버 엔드포인트에 대한 프라이빗 액세스를 활성화하거나 비활성화할지 여부를 선택합니다. 프라이빗 액세스를 활성화하면 클러스터의 VPC 내에서 시작되는 Kubernetes API 요청이 프라이빗 VPC 엔드포인트를 사용합니다. 퍼블릭 액세스를 비활성화하려면 먼저 프라이빗 액세스를 활성화해야 합니다.
  5. 클러스터의 Kubernetes API 서버 엔드포인트에 대한 퍼블릭 액세스를 활성화하거나 비활성화할지 여부를 선택합니다. 퍼블릭 액세스를 비활성화하면 클러스터의 Kubernetes API 서버는 클러스터 VPC 내에서만 요청을 수신할 수 있습니다.
  6. 업데이트를 선택합니다.

AWS CLI를 사용하여 클러스터 API 서버 엔드포인트 액세스 수정

참고: AWS Command Line Interface(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 공식업데이트됨 일 년 전