Key Protect 통합

2세대

Cloud Databases 에 저장하는 데이터는 기본적으로 무작위로 생성된 키를 사용하여 암호화됩니다. 암호화 키를 관리하기 위해, IBM Key Protect 자신만의 키 중 하나를 사용하여 데이터베이스와 백업을 암호화할 수 있습니다.

시작하려면 Key ProtectIBM Cloud 계정에서 프로비저닝을 수행하십시오.

Key Protect에서 키 작성 또는 추가

Key Protect의 인스턴스로 이동하여 키를 생성하거나 입력하십시오.

UI에서 서비스 권한 부여

Key Protect 배치에 사용할 수 있도록 Cloud Databases에 권한을 부여하십시오.

  1. IBM Cloud 대시보드를 여십시오.
  2. 메뉴 모음에서 [ 관리 ] -> [액세스(IAM) ]을 클릭합니다.
  3. 사이드 탐색에서 권한을 클릭하십시오.
  4. 작성을 클릭하십시오.
  5. 소스 서비스 메뉴에서 배치 서비스를 선택하십시오. 예를 들어, Databases for PostgreSQL 혹은 Databases for MongoDB.
  6. '소스' 서비스 리소스 메뉴에서 '모든 리소스'를 선택합니다.
  7. 대상 서비스 메뉴에서 Key Protect를 선택하십시오.
  8. 대상 서비스 의 리소스 그룹으로 ‘Account’를 선택하거나 기본값을 유지하십시오
  9. 대상 서비스 인스턴스 ID 메뉴에서 권한 부여할 서비스 인스턴스를 선택하십시오.
  10. 독자 역할을 사용으로 설정하십시오.
  11. “Bring your own key”(BYOK)를 사용하려면, ‘종속 서비스에 대한 권한 부여 ’ 섹션에서 ‘권한 위임 활성화 ’ 확인란을 선택하십시오.
  12. 권한 부여를 클릭하십시오.

키로 배치를 프로비저닝하기 전에 서비스 권한이 없는 경우 프로비저닝이 실패합니다.

보다 엄격한 권한 부여 정책을 설정하려면, 명시적인 루트 키 CRN 또는 특정 Key Protect 인스턴스를 대상으로 정책을 구성하십시오. Key Protect 키링에 적용되는 제한 사항은 현재 지원되지 않습니다.

CLI에서 서비스 권한 부여

  1. Cloud Databases 서비스가 CLI상의 Key Protect 서비스 인스턴스에 액세스할 수 있도록 권한 정책을 생성합니다. 전체 인수 목록을 보려면 IAM CLI 참조 문서를 참조하십시오.
ibmcloud iam authorization-policy-create <SERVICE-NAME> kms "Reader,AuthorizationDelegator"

키로 배치를 프로비저닝하기 전에 서비스 권한이 없는 경우 프로비저닝이 실패합니다.

보다 엄격한 권한 부여 정책을 설정하려면, 명시적인 루트 키 CRN 또는 특정 Key Protect 인스턴스를 대상으로 정책을 구성하십시오. Key Protect 키링에 적용되는 제한 사항은 현재 지원되지 않습니다.

REST API를 통한 서비스 승인 부여

  1. Cloud Databases 서비스가 IAM REST API를 통해 Key Protect 서비스 인스턴스에 액세스할 수 있도록 권한 정책을 생성합니다.

전체 API 참조 내용은 IAM 정책 관리 API를 참조하십시오.

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
  "type": "authorization",
  "subjects": [
      {
          "attributes": [
              {
                  "name": "accountId",
                  "value": "CUSTOMER_ACCOUNT_ID"
              },
              {
                  "name": "serviceName",
                  "value": "<SERVICE-NAME>"
              }
          ]
      }
  ],
  "roles": [
      {
        "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Reader"
      },
      {
        "role_id": "crn:v1:bluemix:public:iam::::role:AuthorizationDelegator"
      }
    ],
    "resources": [
        {
            "attributes": [
                {
                    "name": "accountId",
                    "operator": "stringEquals",
                    "value": "CUSTOMER_ACCOUNT_ID"
                },
                {
                    "name": "serviceName",
                    "operator": "stringEquals",
                    "value": "kms"
                }
            ]
        }
    ]
}'

키로 배치를 프로비저닝하기 전에 서비스 권한이 없는 경우 프로비저닝이 실패합니다.

보다 엄격한 권한 부여 정책을 설정하려면, 명시적인 루트 키 CRN 또는 특정 Key Protect 인스턴스를 대상으로 정책을 구성하십시오. Key Protect 키링에 적용되는 제한 사항은 현재 지원되지 않습니다.

Key Protect 키 사용

Cloud Databases 배치에 키 사용 권한을 부여한 후 배치를 프로비저닝할 때 키 이름 또는 CRN을 제공합니다. 배치는 암호화 키를 사용하여 데이터를 암호화합니다.

프로비저닝 시 UI에서 ‘ Key Protect ’ 키 사용

카탈로그 페이지에서 프로비저닝하는 경우, 드롭다운 메뉴에서 ‘ Key Protect ’ 인스턴스와 키를 선택하십시오.

프로비저닝 시 CLI에서 Key Protect 키 사용

CLI에서 parameters JSON 객체의 dataservices.encryption.disk 매개변수를 사용하여 서비스 인스턴스에 루트 키 CRN을 할당하십시오.

ibmcloud resource service-instance-create <INSTANCE-NAME> <SERVICE-NAME> <PLAN-NAME> REGION -p '{"dataservices":{"encryption":{"disk":"KMS_KEY_CRN"}}}'

Key Protect 키는 단순히 ID가 아닌 전체 CRN으로 식별되어야 합니다. Key Protect 의 CRN은 crn:v1:<...>:key:<id> 형식을 따릅니다.

프로비저닝 시 API에서 Key Protect 키 사용

API에서 요청 본문에 dataservices.encryption.disk 매개변수를 사용하십시오.

  curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H "Authorization: Bearer <IAM token>" -H 'Content-Type: application/json' -d '{
    "name": "<INSTANCE-NAME>",
    "target": "ca-mon",
    "resource_group": "<A RESOURCE GROUP GUID>",
    "resource_plan_id": "<A PLAN ID>",
    "parameters": {
      "dataservices": {
          "encryption": {
            "disk": "KMS_KEY_CRN"
          }
      }
    }

Key Protect 키는 단순히 ID가 아닌 전체 CRN으로 식별되어야 합니다. Key Protect 의 CRN은 crn:v1:<...>:key:<id> 형식을 따릅니다.

키 순환

Key Protect 수동 및 자동 키 회전 기능을 제공하며, 키 회전 기능은 Cloud Databases 배포 환경에서 지원됩니다. 키를 순환하는 경우 프로세스에서 KMS 상태 동기화 태스크를 시작하고 배치는 새 키로 다시 암호화됩니다. 이 작업은 배포의 ‘개요’ 페이지에 있는 ‘작업’ 페이지에 표시되며, 관련 ‘ Key Protect ’ 및 ‘ Cloud Databases ’ 이벤트가 Activity Tracker 으로 전송됩니다.

자세한 내용은 ‘수동 또는 자동 회전’을 참조하십시오.

배치 삭제

Key Protect 키로 보호된 배포를 삭제하더라도, 소프트 삭제 기간(최대 9일) 동안 해당 배포는 키에 계속 등록된 상태로 유지됩니다. 소프트 삭제 기간 내에 키를 삭제하려면 키를 강제 삭제하십시오. 소프트 삭제 기간이 지나면 키를 정상적으로 삭제할 수 있습니다. 키를 언제 삭제할 수 있는지 확인하려면, 해당 키와 배포 간의 연결 관계를 확인하십시오.

암호 제거

암호 제거는 파괴적인 조치입니다. 키가 삭제되면 데이터를 복구할 수 없습니다.

Key Protect IBM Cloud® 서비스(Gen 2 배포 환경 포함)에서 사용 중인 키에 대해 Cloud Databases 강제 삭제를 시작할 수 있습니다. 이 조치를 암호 제거라고 합니다. 배치에서 사용 중인 키를 삭제하면 데이터가 포함된 디스크가 잠기고 배치가 사용 안함으로 설정됩니다. UI, CLI, API의 보안 설정과 같은 일부 메타데이터와 UI에 액세스할 수 있지만 여기에 포함된 데이터베이스나 데이터에는 액세스할 수 없습니다. 키 삭제는 kms.secrets.delete 형식으로 Activity Tracker Event Routing 으로 전송됩니다.

백업을 위한 고유 키 가져오기

Key Protect 를 사용하는 경우, 데이터베이스를 프로비저닝할 때 배포의 백업이 저장되는 IBM® Cloud Block Storage for Virtual Private Cloud 디스크를 암호화할 키를 지정할 수도 있습니다.

백업은 데이터베이스와 동일한 암호화 키를 상속받습니다. 데이터베이스에서 백업을 생성할 때는 다른 암호화 키를 지정할 수 없습니다.

위임 권한 부여

배포에서 ‘ Key Protect ’ 키를 사용하려면, 서비스 권한을 부여할 때 ‘권한 위임 허용’을 설정해야 합니다. 키로 배치를 프로비저닝하기 전에 위임 권한이 없는 경우 프로비저닝이 실패합니다.

위임을 사용으로 설정하고 배치를 프로비저닝하고 나면 IAM의 _권한_에 두 개의 항목이 표시됩니다. 하나는 해당 상태를 위임자로 나열하는 배치에 대한 항목입니다. 이는 "사용자 작성"입니다.

위임자 예시 Key Protect 의 승인
역할 소스 대상 유형
권한 위임자, 독자 <cloud-databases> 서비스 Key Protect 서비스 사용자 정의

그리고 서비스 인스턴스 및 해당 백업(있는 경우)에 대한 ‘ Block Storage for VPC ’ 볼륨에 하나씩 할당되며, 이 경우 배포가 시작자 역할을 합니다.

Cloud Databases 에서 Cloud Object Storage 에 대한 Key Protect 인증 예시
역할 소스 대상 유형
독자 Block Storage for VPC 서비스 Key Protect 서비스 작성자<cloud-databases-crn>

키 제거

IAM/ Key Protect 는 키와 Block Storage for VPC 간의 정책을 삭제하는 것을 막지는 않지만(두 번째 예시), 이렇게 할 경우 토픽이나 파티션을 복구할 수 없게 될 수 있습니다.

흔히 빠지기 쉬운 함정

키 및 권한을 제거할 때 주의하십시오. 동일한 키를 사용하는 배포가 여러 개인 경우, 위임 권한을 취소함으로써 의도치 않게 해당 배포 모두의 데이터가 소실될 수 있습니다. 가능하다면, 여러 배포에 동일한 키를 사용하지 마십시오.

인스턴스와 관련된 데이터를 완전히 삭제하려면 키를 삭제하면 됩니다. Block Storage for VPC 명령어는 해당 저장소가 읽기 및 쓰기 모두 불가능하도록 보장합니다. 그러나 동일한 키를 사용하는 다른 배포 환경(또는 해당 백업)에서는 이후 오류가 발생할 것입니다.

여러 배포 및/또는 백업에 동일한 키를 사용해야 하는 경우, 키와 권한을 제거하면 다음과 같은 부작용이 발생할 수 있습니다. (표 2에 표시된 대로) Block Storage for VPC 볼륨 권한을 삭제하면, 생성자로 표시된 배포뿐만 아니라 동일한 키를 사용하는 모든 배포에도 영향을 미칩니다. 지원 티켓을 제출하고 정책 재생성을 요청하기 전까지는 해당 배포 과정에서 오류가 발생할 것입니다.

키를 재사용하는 경우 주의하십시오.