보안 사용자 인증 정보 순환

이 주제에서는 GKE on AWS 관리 서비스와 사용자 클러스터의 사용자 인증 정보를 순환하는 방법을 설명합니다. GKE on AWS의 보안 기능에 대한 자세한 내용은 보안을 참조하세요.

시작하기 전에

이 페이지의 단계를 완료하려면 GKE on AWS 구성이 있는 디렉터리에 대한 액세스 권한이 있어야 합니다.

관리 서비스 인증서

이 섹션에서는 관리 서비스 인증서를 순환하는 방법을 설명합니다.

관리 인증 기관

이 섹션에서는 GKE on AWS 구성 요소의 인증 기관(CA) 서명 인증서를 순환하는 방법을 설명합니다.

Management API 서버 루트 CA

API 서버 루트 CA를 순환하려면 다음 단계를 수행합니다.

  1. GKE on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
    cd anthos-aws
  2. 텍스트 편집기에서 anthos-gke.status.yaml을 엽니다.
  3. certificateAuthority 키에서 모든 값을 삭제합니다. 여기에는 encryptedPrivateKey.kmsKeyARN, encryptedPrivateKey.value, encryptedPrivateKey.certificate가 포함됩니다.
  4. anthos-gke aws management init를 실행하여 anthos-gke.status.yaml 파일을 업데이트합니다.

     anthos-gke aws management init
    
  5. anthos-gke aws management apply를 실행하여 관리 서비스를 업데이트합니다.

     anthos-gke aws management apply
    

  1. anthos-aws 디렉터리에서 anthos-gke를 사용하여 컨텍스트를 관리 서비스로 전환합니다.
    cd anthos-aws
    anthos-gke aws management get-credentials

기타 관리 CA

이 섹션에서는 다음 CA를 모두 순환하는 방법을 설명합니다.

  • 인증 웹훅 CA
  • Etcd CA
  • 서비스 계정 서명자 CA

다음 방법 중 하나를 사용하여 이러한 CA를 순환할 수 있습니다.

  • anthos-gke.status.yaml에서 certificateAuthority 섹션을 삭제합니다.

    1. GKE on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
      cd anthos-aws
    2. 텍스트 편집기에서 anthos-gke.status.yaml을 엽니다.
    3. certificateAuthority 키에서 모든 값을 삭제합니다. 여기에는 encryptedPrivateKey.kmsKeyARN, encryptedPrivateKey.value, encryptedPrivateKey.certificate가 포함됩니다.
    4. anthos-gke aws management init를 실행하여 anthos-gke.status.yaml 파일을 업데이트합니다.

       anthos-gke aws management init
      
    5. anthos-gke aws management apply를 실행하여 관리 서비스를 업데이트합니다.

       anthos-gke aws management apply
      

  • 새 GKE on AWS 버전을 사용할 수 있으면 GKE on AWS 관리 서비스를 업그레이드합니다.

  • 관리 서비스 EC2 인스턴스를 다시 만듭니다.

    1. anthos-aws 디렉터리에서 terraform을 사용하여 관리 서비스 ID를 가져옵니다.
      cd anthos-aws
      terraform output cluster_id
      출력에 관리 서비스 ID가 포함됩니다. 다음 예시에서 ID는 gke-12345abc입니다.
      terraform output cluster_id
      gke-12345abc
      
    2. AWS EC2 콘솔을 엽니다.
    3. 인스턴스를 클릭합니다.
    4. cluster-id-management-0이라는 인스턴스를 찾습니다.
    5. 작업 -> 인스턴스 상태 -> 종료를 선택하여 인스턴스를 삭제합니다. EC2는 동일한 EBS 볼륨을 사용하는 새 인스턴스를 자동으로 만듭니다.

관리 TLS 클라이언트/서버 키 및 인증서

관리 서비스의 TLS 클라이언트/서버 키와 인증서를 순환하려면 관리 서비스 인스턴스를 다시 만듭니다. 인스턴스를 다시 만들려면 다음 단계를 수행합니다.

  1. anthos-aws 디렉터리에서 terraform을 사용하여 관리 서비스 ID를 가져옵니다.
    cd anthos-aws
    terraform output cluster_id
    출력에 관리 서비스 ID가 포함됩니다. 다음 예시에서 ID는 gke-12345abc입니다.
    terraform output cluster_id
    gke-12345abc
    
  2. AWS EC2 콘솔을 엽니다.
  3. 인스턴스를 클릭합니다.
  4. cluster-id-management-0이라는 인스턴스를 찾습니다.
  5. 작업 -> 인스턴스 상태 -> 종료를 선택하여 인스턴스를 삭제합니다. EC2는 동일한 EBS 볼륨을 사용하는 새 인스턴스를 자동으로 만듭니다.

Google Cloud 서비스 계정

관리 서비스 서비스 계정

관리 서비스의 Google Cloud 서비스 계정을 순환하려면 다음 단계를 수행합니다.

  1. 기본 요건의 단계를 수행하여 새 서비스 계정을 만들고 서비스 계정 키를 다운로드합니다.
  2. GKE on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
    cd anthos-aws
  3. 키를 다른 경로로 다운로드한 경우 텍스트 편집기에서 anthos-gke.yaml 파일을 엽니다. .spec.googleCloud.serviceAccountKeys.managementService, .status.googleCloud.serviceAccountKeys.connectAgent, .spec.googleCloud.serviceAccountKeys.node의 값을 새 경로로 변경합니다.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
     name: management
    spec:
     googleCloud:
       serviceAccountKeys:
         managementService: MANAGEMENT_KEY_PATH
         connectAgent: CONNECT_KEY_PATH
         node: NODE_KEY_PATH
     ...
    
  4. anthos-gke aws management init를 실행하여 anthos-gke.status.yaml 파일을 업데이트합니다.

    anthos-gke aws management init
    
  5. anthos-gke aws management apply를 실행하여 관리 서비스를 업데이트합니다.

    anthos-gke aws management apply
    

사용자 클러스터 서비스 계정

AWSCluster 및 AWSNodePool에서 이러한 서비스 계정을 적용하려면 업그레이드하거나 삭제한 후 다시 만듭니다.

사용자 클러스터 인증서

이 섹션에서는 사용자 클러스터 인증서를 순환하는 방법을 설명합니다.

사용자 클러스터 CA 및 SSH 키

클러스터를 만들 때 대부분의 사용자 클러스터 CA가 생성됩니다.

사용자 클러스터를 삭제하면 GKE on AWS가 다음 인증서를 순환합니다.

  • API 서버 루트 CA
  • API 프런트 프록시 CA
  • etcd CA
  • Kubernetes 서비스 계정 서명자 CA
  • 노드 SSH 키 쌍에 대한 제어 영역

사용자 클러스터 인증 웹훅 CA

사용자 클러스터 인증 웹훅 CA를 순환하려면 anthos-gke.status.yaml 파일을 수정하고 변경사항을 적용합니다.

  1. GKE on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
    cd anthos-aws
  2. 텍스트 편집기에서 anthos-gke.status.yaml을 엽니다.
  3. certificateAuthority 키에서 모든 값을 삭제합니다. 여기에는 encryptedPrivateKey.kmsKeyARN, encryptedPrivateKey.value, encryptedPrivateKey.certificate가 포함됩니다.
  4. anthos-gke aws management init를 실행하여 anthos-gke.status.yaml 파일을 업데이트합니다.

     anthos-gke aws management init
    
  5. anthos-gke aws management apply를 실행하여 관리 서비스를 업데이트합니다.

     anthos-gke aws management apply
    

사용자 클러스터 TLS 키 쌍 및 인증서

GKE on AWS는 인스턴스를 만들 때 TLS 키 쌍과 인증서를 생성합니다. 이러한 쌍을 순환하려면 제어 영역과 노드 풀에 다음 단계를 수행하여 인스턴스를 다시 만듭니다.

제어 영역

  1. anthos-aws 디렉터리에서 anthos-gke를 사용하여 컨텍스트를 관리 서비스로 전환합니다.
    cd anthos-aws
    anthos-gke aws management get-credentials
  2. kubectl을 사용하여 제어 영역의 AWS EC2 대상 그룹을 AWSCluster에서 가져옵니다.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get awscluster cluster-name \
      -o jsonpath='{.status.targetGroupName}{"\n"}'
    

    출력에는 제어 영역의 EC2 대상 그룹 이름이 포함됩니다. 예를 들면 gke-123456a7-controlplane입니다.

  3. AWS EC2 콘솔을 엽니다. 왼쪽 창에서 대상 그룹을 선택합니다.

  4. 검색창을 클릭하고 대상 그룹을 찾습니다. 대상 그룹의 Name(이름)을 클릭한 후 Targets(대상)를 클릭합니다. 제어 영역 인스턴스 목록이 표시됩니다.

  5. 대상 그룹의 인스턴스마다 다음 단계를 수행합니다.

    1. 인스턴스의 인스턴스 ID를 클릭합니다. AWS EC2 인스턴스 콘솔이 표시됩니다.

    2. 인스턴스 ID를 클릭합니다.

    3. 작업 -> 인스턴스 상태 -> 종료를 선택하여 인스턴스를 삭제합니다. EC2는 동일한 EBS 볼륨을 사용하는 새 인스턴스를 자동으로 만듭니다.

    4. 대상 그룹 페이지로 돌아갑니다.

  6. 그룹의 모든 인스턴스를 종료한 후 대상 그룹 페이지로 돌아갑니다.

  7. 페이지의 등록된 대상 섹션에서 상태 열을 찾습니다. 각 인스턴스의 상태정상이어야 합니다. 인스턴스 중 하나가 정상이면 몇 분 정도 기다린 후 새로고침() 아이콘을 클릭합니다.

  8. 대상 그룹의 모든 인스턴스가 정상이면 다음 단계로 진행합니다.

노드 풀

노드 풀의 TLS 인증서를 순환하려면 다음 안내를 따르세요.

  1. anthos-aws 디렉터리에서 anthos-gke를 사용하여 컨텍스트를 관리 서비스로 전환합니다.
    cd anthos-aws
    anthos-gke aws management get-credentials
  2. kubectl을 사용하여 AWSNodePool에서 노드 풀의 AWS EC2 대상 그룹을 가져옵니다.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get awsnodepool -o jsonpath='{.items[*].status.autoScalingGroupName}{"\n"}'
    

    출력에는 노드 풀의 EC2 대상 그룹 이름이 포함됩니다. 예를 들면 gke-123456a7-nodepool-abc123입니다.

  3. AWS EC2 콘솔을 엽니다. 왼쪽 창에서 대상 그룹을 선택합니다.

  4. 검색창을 클릭하고 대상 그룹을 찾습니다. 대상 그룹의 Name(이름)을 클릭한 후 Targets(대상)를 클릭합니다. 제어 영역 인스턴스 목록이 표시됩니다.

  5. 대상 그룹의 인스턴스마다 다음 단계를 수행합니다.

    1. 인스턴스의 인스턴스 ID를 클릭합니다. AWS EC2 인스턴스 콘솔이 표시됩니다.

    2. 인스턴스 ID를 클릭합니다.

    3. 작업 -> 인스턴스 상태 -> 종료를 선택하여 인스턴스를 삭제합니다. EC2는 동일한 EBS 볼륨을 사용하는 새 인스턴스를 자동으로 만듭니다.

    4. 대상 그룹 페이지로 돌아갑니다.

  6. 그룹의 모든 인스턴스를 종료한 후 대상 그룹 페이지로 돌아갑니다.

  7. 페이지의 등록된 대상 섹션에서 상태 열을 찾습니다. 각 인스턴스의 상태정상이어야 합니다. 인스턴스 중 하나가 정상이면 몇 분 정도 기다린 후 새로고침() 아이콘을 클릭합니다.

  8. 대상 그룹의 모든 인스턴스가 정상이면 다음 단계로 진행합니다.