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

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

클러스터를 만든 후에는 IBM® Key Protect for IBM Cloud® 과 같은 키 관리 서비스(KMS) 공급자를 활성화하여 Kubernetes 비밀 및 비밀에 저장된 모든 자격 증명을 보호할 수 있습니다.

CLI에서 시크릿 암호화 사용

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

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

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

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

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

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

    ibmcloud oc kms enable -c CLUSTER_NAME_OR_ID --instance-id KMS_INSTANCE_ID --crk ROOT_KEY_ID [--public-endpoint]
    

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

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

    ibmcloud oc 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. 선택사항: 시크릿이 암호화되어 있는지 확인하십시오.

키 활성화는 Red Hat OpenShift 을 통해 시작되며, 이는 암호화가 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. 선택사항: 시크릿이 암호화되어 있는지 확인하십시오.

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

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

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

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

시크릿 암호화 확인

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

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

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

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    
  2. Red Hat OpenShift 클러스터에 액세스하십시오.

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

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

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

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

    oc get secrets --all-namespaces
    

    출력 예

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

    ibmcloud oc cluster get -c <cluster_name_or_ID>
    
  8. KMS 인스턴스에서 루트 키를 활성화하여 클러스터가 정상 상태로 복구되고 다시 사용할 수 있도록 하십시오.