IBM Cloud Docs
클러스터 시크릿 암호화 설정

클러스터 시크릿 암호화 설정

가상 프라이빗 클라우드 클래식 인프라 Satellite

클러스터를 작성한 후 키 관리 서비스 (KMS) 제공자 (예: IBM® Key Protect for IBM Cloud® 또는 Hyper Protect Crypto Services) 를 사용으로 설정하여 Kubernetes 시크릿 및 시크릿에 저장된 모든 신임 정보를 보호할 수 있습니다.

CLI에서 시크릿 암호화 사용

CLI를 통해 KMS 제공자를 사용으로 설정하거나 KMS 제공자 인스턴스 또는 루트 키를 업데이트할 수 있습니다.

다른 계정에서 KMS를 사용하여 교차 계정 암호화를 설정하는 것은 CLI 또는 API에서 지원됩니다.

  1. KMS 인스턴스 및 루트 키를 작성하십시오. 교차 계정 KMS 암호화를 사용하려면 KMS 인스턴스를 사용할 계정에 KMS및 루트 키를 작성해야 합니다.

  2. 이전에 작성한 KMS 인스턴스의 ID를 가져오십시오.

    ibmcloud ks kms instance ls
    
  3. 이전에 작성한 루트 키의 ID를 가져오십시오.

    ibmcloud ks kms crk ls --instance-id <KMS_instance_ID>
    
  4. KMS 제공자를 사용으로 설정하여 클러스터에 있는 시크릿을 암호화하십시오. 이전에 검색한 정보로 옵션을 작성합니다. 암호화 키를 다운로드하는 데는 기본적으로 KMS 제공자의 프라이빗 클라우드 서비스 엔드포인트가 사용됩니다. 대신 퍼블릭 클라우드 서비스 엔드포인트를 사용하려면 --public-endpoint 옵션을 포함하세요. 인에이블먼트 프로세스는 완료하는 데 약간의 시간이 소요될 수 있습니다.

    ibmcloud ks kms enable -c <cluster_name_or_ID> --instance-id <kms_instance_ID> --crk <root_key_ID> [--public-endpoint]
    

    인에이블먼트 도중에 배치에 필요한 YAML 구성을 업데이트하는 등 Kubernetes 마스터에 액세스할 수 없습니다.

  5. KMS 인에이블먼트 프로세스가 완료되었는지 확인하십시오. 마스터 상태준비됨이고 키 관리 서비스사용으로 설정되면 프로세스가 완료됩니다.

    ibmcloud ks cluster get -c <cluster_name_or_ID>
    

    인에이블먼트가 진행 중인 경우 출력 예

    NAME:                   <cluster_name>   
    ID:                     <cluster_ID>   
    ...
    Master Status:          Key management service feature enablement in progress.  
    

    마스터가 준비된 경우 출력 예

    NAME:                   <cluster_name>   
    ID:                     <cluster_ID>   
    ...
    Master Status:          Ready (1 min ago)
    ...
    Key Management Service: enabled   
    

    KMS 제공자가 클러스터에서 사용으로 설정되면 모든 클러스터 시크릿이 자동으로 암호화됩니다.

  6. 선택사항: 시크릿이 암호화되어 있는지 확인하십시오.

Kubernetes Service 를 통해 시작되는 키 활성화는 암호화가 KMS 제공자의 새로운 키로 전환됨을 의미합니다. KMS 제공자를 통해 시작되는 키 로테이션은 기존 키의 새로운 버전으로 암호화가 전환됨을 의미합니다. KMS 제공자로부터 KMS 인스턴스를 교체하는 경우, KMS 인스턴스의 루트 키를 삭제하지 마십시오. 루트 키는 더 이상 사용하지 않을 때만 삭제할 수 있습니다. 예를 들어, 새로운 키를 활성화한 후 클러스터가 더 이상 이전 키를 사용하지 않는다는 것을 확인한 후에는 이전 키를 삭제할 수 있습니다. 클러스터가 사용하는 루트 키를 삭제하면 클러스터를 사용할 수 없게 되고 해당 데이터가 모두 손실되며 복구할 수 없습니다. 루트 키를 순환시키는 경우 동일한 클러스터에 대해 이전 루트 키를 재사용할 수는 없습니다. 마찬가지로 루트 키를 비활성화하면 시크릿 읽기에 의존하는 작업이 실패합니다. 그러나 루트 키를 삭제하는 것과는 달리 비활성화된 키를 다시 활성화하여 클러스터를 다시 사용할 수 있게 할 수 있습니다.

콘솔에서 시크릿 암호화 사용

IBM Cloud 콘솔을 통해 KMS 제공자를 사용으로 설정하거나 KMS 제공자 인스턴스 또는 루트 키를 업데이트할 수 있습니다.

  1. KMS 인스턴스 및 루트 키를 작성하십시오. 교차 계정 KMS 암호화를 사용하려면 KMS 인스턴스를 사용할 계정에 KMS및 루트 키를 작성해야 합니다.

  2. 콘솔에서 암호화를 사용 설정할 클러스터를 선택합니다.

  3. 키 관리 서비스 섹션에서 사용을 클릭합니다. 이미 KMS 제공자를 사용으로 설정한 경우에는 업데이트를 클릭하십시오.

  4. 키 관리 서비스 인스턴스를 선택하고 암호화에 사용하려는 루트 키를 선택하십시오.

    인에이블먼트 도중에 배치에 필요한 YAML 구성을 업데이트하는 등 Kubernetes 마스터에 액세스할 수 없습니다.

  5. 사용(또는 업데이트)을 클릭하십시오.

  6. KMS 인에이블먼트 프로세스가 완료되었는지 확인하십시오. 인에이블먼트가 진행 중인 경우 출력 예입니다.

    Master status   KMS feature enablement in progress.  
    

    마스터가 준비된 경우 출력 예입니다.

    Master status   Ready
    

    KMS 제공자가 클러스터에서 사용으로 설정되면 모든 클러스터 시크릿이 자동으로 암호화됩니다.

  7. 선택사항: 시크릿이 암호화되어 있는지 확인하십시오.

키 활성화( Kubernetes Service 를 통해 시작됨)는 암호화가 KMS 제공자의 새로운 키로 전환됨을 의미합니다. KMS 제공자를 통해 시작되는 키 로테이션은 기존 키의 새로운 버전으로 암호화가 전환됨을 의미합니다. KMS 제공자로부터 KMS 인스턴스를 교체하는 경우, KMS 인스턴스의 루트 키를 삭제하지 마십시오. 루트 키는 더 이상 사용하지 않을 때만 삭제할 수 있습니다. 예를 들어, 새로운 키를 활성화한 후 클러스터가 더 이상 이전 키를 사용하지 않는다는 것을 확인한 후에는 이전 키를 삭제할 수 있습니다. 클러스터가 사용하는 루트 키를 삭제하면 클러스터를 사용할 수 없게 되고 해당 데이터가 모두 손실되며 복구할 수 없습니다. 루트 키를 순환시키는 경우 동일한 클러스터에 대해 이전 루트 키를 재사용할 수는 없습니다. 마찬가지로 루트 키를 비활성화하면 시크릿 읽기에 의존하는 작업이 실패합니다. 그러나 루트 키를 삭제하는 것과는 달리 비활성화된 키를 다시 활성화하여 클러스터를 다시 사용할 수 있게 할 수 있습니다.

클러스터에 대한 루트 키 회전

클러스터를 암호화하는 데 사용되는 루트 키를 순환하려면 KMS 암호화를 사용으로 설정하는 단계를 반복하십시오. 루트 키를 순환시키는 경우 동일한 클러스터에 대해 이전 루트 키를 재사용할 수는 없습니다.

KMS 인스턴스에서 수동으로 루트 키를 순환할 수 있습니다. 이 조치는 새 루트 키를 사용하여 클러스터의 KMS를 자동으로 다시 사용으로 설정합니다. 키를 수동으로 순환하려면 KMS 제공자 문서를 참조하십시오.

시크릿 암호화 확인

IBM Cloud Kubernetes Service 클러스터에서 KMS 제공자를 사용으로 설정한 후 루트 키를 사용 안함으로 설정하여 클러스터 시크릿이 암호화되었는지 확인할 수 있습니다. 루트 키를 사용 안함으로 설정하면 클러스터가 더 이상 시크릿을 복호화할 수 없게 되는 동시에 클러스터를 사용할 수 없게 되며, 이는 시크릿이 암호화되었음을 나타냅니다.

클러스터에 대한 IBM Cloud IAM 관리자 플랫폼 및 관리자 서비스 액세스 역할이 있는지 확인하십시오.

  1. KMS 암호화가 사용으로 설정되었는지 확인하려면 다음 명령의 출력에서 키 관리 서비스 상태가 enabled로 설정되었는지 확인하십시오.

    ibmcloud ks cluster get -c <cluster_name_or_ID>
    
  2. 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.

  3. 클러스터에 있는 시크릿을 나열할 수 있는지 확인하십시오.

    kubectl get secrets --all-namespaces
    
  4. KMS 인스턴스에서 클러스터를 암호화하는 데 사용되는 루트 키를 사용 안함으로 설정하십시오. 다른 계정의 KMS및 CRK로 클러스터를 암호화한 경우에는 CRK가 있는 계정에서만 CRK를 사용 안함으로 설정할 수 있습니다.

  5. 클러스터가 루트 키에 대한 변경사항을 발견할 때까지 대기하십시오.

  6. 시크릿을 나열해 보십시오. 더 이상 클러스터에 연결할 수 없으므로 제한시간 초과 오류가 발생합니다. ibmcloud ks cluster config를 실행하여 클러스터에 대한 컨텍스트를 설정하려는 경우, 명령이 실패합니다.

    kubectl get secrets --all-namespaces
    

    출력 예

    Unable to connect to the server: dial tcp 169.48.110.250:32346: i/o timeout
    
  7. 클러스터가 경고 상태인지 확인하십시오. 클러스터는 이 상태로 유지되며 루트 키를 다시 사용으로 설정하기 전까지 사용할 수 없습니다.

    ibmcloud ks cluster get -c <cluster_name_or_ID>
    
  8. KMS 인스턴스에서 루트 키를 활성화하여 클러스터가 정상 상태로 돌아와 다시 사용할 수 있도록 합니다.