루트 키 작성

UI를 사용하거나 Hyper Protect Crypto Services 키 관리 서비스 API를 사용하여 프로그래밍 방식으로 루트 키A symmetric wrapping key that is used for encrypting and decrypting other keys that are stored in a data service. 를 작성하기 위해 IBM Cloud® Hyper Protect Crypto Services 를 사용할 수 있습니다.

루트 키는 클라우드에서 암호화된 데이터의 보안을 보호하는 데 사용되는 대칭 키-랩핑 키입니다. 루트 키에 대한 자세한 정보는 엔벨로프 암호화를 참조하십시오.

UI를 사용하여 루트 키 작성

서비스의 인스턴스를 작성한 후 UI를 사용하여 루트 키를 작성하려면 다음 단계를 완료하십시오.

Hyper Protect Crypto Services 인스턴스에 대한 이중 권한 설정을 사용으로 설정하는 경우 키를 삭제하려면 서비스에 추가하는 모든 키에 두 사용자의 권한이 필요합니다.

  1. UI에 로그인하십시오.

  2. 메뉴 > 리소스 목록으로 이동하여 리소스 목록을 보십시오.

  3. IBM Cloud 리소스 목록에서 Hyper Protect Crypto Services의 프로비저닝된 인스턴스를 선택하십시오.

  4. 새 키를 작성하려면 사이드 메뉴에서 KMS키 탭을 선택하십시오.

  5. 테이블에서 키 추가를 클릭한 후 키 작성을 선택하십시오.

    키의 세부사항을 지정하십시오.

    표 1. 키를 작성하기 위한 설정에 대해 설명합니다.
    설정 설명
    키 유형 Hyper Protect Crypto Services에서 관리할 키의 유형입니다. 키 유형 목록에서 **루트 키**를 선택하십시오.
    키 이름 키를 쉽게 식별할 수 있도록 해 주는 사용자가 읽을 수 있는 고유 이름입니다. 길이는 2 - 90자 이내여야 합니다. 개인정보를 보호하려면 키 이름에 사용자 이름 또는 위치와 같은 PII(Personally Identifiable Information)가 포함되지 않았는지 확인하십시오.
    키 별명 (선택 사항) 쉽게 인식할 수 있도록 키에 할당하려는 하나 이상의 사람이 읽을 수 있는 고유한 별명입니다. 별명 크기는 2 - 90자가 될 수 있습니다. 키에 대해 각각 쉼표로 구분하여 최대 다섯 개의 키 별명을 설정할 수 있습니다.

    참고: 각 별명은 대소문자를 구분하는 영숫자여야 하며 대시 (-) 또는 밑줄 (_) 이외의 공백이나 특수 문자를 포함할 수 없습니다. 별명은 버전 4 UUID일 수 없으며 Hyper Protect Crypto Services 예약 이름 allowed_ip, key, keys, metadata, policy, policies, registration, registrations, ring, rings, rotate, wrap, unwrap, rewrap, version, versions 이 아니어야 합니다.

    키 링 ID 기존 키 링이 포함된 목록에서 키 링을 선택하십시오. 키 링을 지정하지 않을 경우 키가 default 키 링에 추가됩니다. 키 링에 대한 자세한 정보는 키 링 관리를 참조하십시오.
    만기 날짜 (선택사항) 키가 만료되는 날짜 및 시간을 설정하십시오. 만기 날짜 이후에는 키가 비활성화 상태로 이동합니다. 키 상태에 대한 자세한 정보는 암호화 키의 라이프사이클 모니터링을 참조하십시오.
    설명 (선택사항) 키에 대한 자세한 설명을 추가하십시오. 길이는 2 - 240자가 될 수 있습니다.
  6. 키의 세부사항 채우기가 완료되면 키 작성을 클릭하여 확인하십시오.

서비스에서 작성된 키는 대칭 256비트 키이며, AES-CBC 알고리즘으로 지원됩니다. 추가된 보안을 위해 키는 보안 IBM Cloud 데이터 센터에 있는 FIPS 140-2레벨 4인증 하드웨어 보안 모듈(HSM)A physical appliance that provides on-demand encryption, key management, and key storage as a managed service. 에 의해 생성됩니다.

API로 루트 키 작성

다음 엔드포인트에 대한 POST 호출을 작성하여 루트 키를 작성하십시오.

https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys
  1. 서비스 및 인증용 인증 정보를 검색하여 서비스에서 키에 대한 작업을 수행하십시오.

  2. 다음 curl 명령을 사용하여 Hyper Protect Crypto Services 키 관리 서비스 API 를 호출하십시오.

    curl -X POST \
      "https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys" \
      -H "authorization: Bearer <IAM_token>" \
      -H "bluemix-instance: <instance_ID>" \
      -H "content-type: application/vnd.ibm.kms.key+json" \
      -H "x-kms-key-ring: <key_ring_ID>" \
      -H "correlation-id: <correlation_ID>" \
      -d '{
              "metadata": {
                  "collectionType": "application/vnd.ibm.kms.key+json",
                  "collectionTotal": 1
              },
              "resources": [
                  {
                      "type": "application/vnd.ibm.kms.key+json",
                       "name": "<key_name>",
                       "aliases": [alias_list],
                       "description": "<key_description>",
                       "expirationDate": "<YYYY-MM-DDTHH:MM:SS.SSZ>",
                       "extractable": <key_type>
                  }
              ]
          }'
    

    다음 표에 따라 예제 요청의 변수를 대체하십시오.

    표 2. API를 사용하여 루트 키를 추가하는 데 필요한 변수를 설명합니다.
    가변 설명
    region 필수입니다. Hyper Protect Crypto Services 서비스 인스턴스가 상주하는 지리적 영역을 표시하는 지역 약어(예: us-south 또는 au-syd)입니다. 자세한 정보는 지역 서비스 엔드포인트를 참조하십시오.
    port 필수입니다. API 엔드포인트의 포트 번호입니다.
    IAM_token 필수입니다. 사용자의 IBM Cloud 액세스 토큰입니다. cURL 요청에 Bearer 값 등 IAM 토큰의 전체 컨텐츠를 포함하십시오. 자세한 정보는 액세스 토큰 검색을 참조하십시오.
    instance_ID 필수입니다. Hyper Protect Crypto Services 서비스 인스턴스에 지정된 고유 ID입니다. 자세한 정보는 인스턴스 ID 검색을 참조하십시오.
    key_ring_ID 선택사항. 키를 지정할 대상 키 링의 고유 ID입니다. 지정되지 않은 경우 헤더는 자동으로 default 로 설정되고 키는 지정된 Hyper Protect Crypto Services 인스턴스의 기본 키 링에 속합니다.

    자세한 정보는 키 링 관리를 참조하십시오.

    correlation_ID 트랜잭션을 추적하고 상관시키는 데 사용되는 고유 ID입니다.
    key_name 필수입니다. 키를 쉽게 식별할 수 있도록 해 주는 사용자가 읽을 수 있는 고유 이름입니다.

    중요: 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오.

    alias_list 선택사항. 키에 지정되었으며 사용자가 읽을 수 있는 하나 이상의 고유한 별명입니다.

    중요: 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오.

    각 별명은 영숫자여야 하며 대소문자를 구분해야 하며 대시 (-) 또는 밑줄 (_) 이외의 공백이나 특수 문자를 포함할 수 없습니다. 별명은 버전 4 UUID일 수 없으며 Hyper Protect Crypto Services 예약 이름 allowed_ip, key, keys, metadata, policy, policies, registration, registrations, ring, rings, rotate, wrap, unwrap, rewrap, version, versions 이 아니어야 합니다. 별명 크기는 2-90자 (포함) 일 수 있습니다.

    key_description 선택사항: 키에 대한 자세한 설명입니다.

    중요: 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오.

    YYYY-MM-DD

    HH:MM:SS.SS

    선택사항: 시스템에서 키가 만료되는 날짜 및 시간입니다(RFC 3339 형식). expirationDate 속성이 생략되면 키가 만료되지 않습니다.
    key_type 키 자료 서비스를 중단할지 여부를 판별하는 부울 값입니다.

    extractable 속성을 false로 설정하면 서비스가 wrap 또는 unwrap 오퍼레이션에 사용할 수 있는 루트 키를 작성합니다.

    개인 데이터의 기밀성을 보호하려면 서비스에 키를 추가할 때 사용자 이름 또는 위치와 같은 PII(Personally Identifiable Information)를 입력하지 않도록 하십시오. PII의 추가 예제는 NIST Special Publication 800-122의 2.2 절을 참조하십시오.

    요청에서 expirationDate를 설정하는 경우 해당 키는 키의 만기 날짜 이후 1시간 이내에 비활성화 상태로 변경됩니다.

    성공한 POST /v2/keys 응답은 기타 메타데이터와 함께 키의 ID 값을 리턴합니다. 이 ID는 키에 지정된 고유 ID이며 Hyper Protect Crypto Services 키 관리 서비스 API에 대한 후속 호출 시 사용됩니다.

    {
        "metadata": {
            "collectionType": "application/vnd.ibm.kms.key+json",
            "collectionTotal": 1
        },
        "resources": [
            {
                "type": "application/vnd.ibm.kms.key+json",
                "id": "02fd6835-6001-4482-a892-13bd2085f75d",
                "name": "test-root-key",
                "aliases": [
                    "alias-1",
                    "alias-2"
                  ],
                "description": "A test root key",
                "state": 1,
                "extractable": false,
                "crn": "crn:v1:bluemix:public:hs-crypto:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
                "imported": false,
                "creationDate": "2020-03-12T03:37:32Z",
                "createdBy": "...",
                "algorithmType": "AES",
                "algorithmMetadata": {
                    "bitLength": "256",
                    "mode": "CBC_PAD"
                },
                "algorithmBitSize": 256,
                "algorithmMode": "CBC_PAD",
                "lastUpdateDate": "2020-03-12T03:37:32Z",
                "keyVersion": {
                    "id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
                    "creationDate": "2020-03-12T03:37:32Z"
                },
                "dualAuthDelete": {
                    "enabled": false
                },
                "deleted": false
            }
        ]
    }
    

    응답 매개변수에 대한 자세한 설명은 Hyper Protect Crypto Services REST API 참조 문서를 참조하십시오.

  3. 선택사항: Hyper Protect Crypto Services 서비스 인스턴스에서 키를 찾아보는 다음 호출을 실행하여 키가 작성되었는지 확인하십시오.

    curl -X GET \
      https://<instance_ID>.api.<region>.hs-crypto.appdomain.cloud/api/v2/keys \
      -H 'accept: application/vnd.ibm.collection+json' \
      -H 'authorization: Bearer <IAM_token>' \
      -H 'bluemix-instance: <instance_ID>' \
      -H 'correlation-id: <correlation_ID>' \
    

서비스를 사용하여 루트 키를 작성한 후 해당 키는 Hyper Protect Crypto Services 범위 내에 유지되며 키 자료를 검색할 수 없습니다.

다음에 수행할 작업