루트 키 가져오기

UI를 사용하거나 Hyper Protect Crypto Services 키 관리 서비스 API를 사용하여 프로그래밍 방식으로 기존 루트 키를 보호하기 위해 IBM Cloud® Hyper Protect Crypto Services 를 사용할 수 있습니다.

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

키 자료 작성 및 암호화를 위한 옵션을 검토하여 키 가져오기를 계획하십시오. 보안을 추가하려면 클라우드로 키 자료를 가져오기 전에 이 키 자료를 암호화도록 가져오기 토큰을 사용하여 키 자료의 보안 가져오기를 사용으로 설정할 수 있습니다.

UI를 사용하여 루트 키 가져오기

서비스의 인스턴스를 작성한 후 다음 단계를 완료하여 Hyper Protect Crypto Services GUI로 기존 루트 키를 추가하십시오.

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

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

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

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

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

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

    표 1. 루트 키 가져오기에 대한 설정을 설명합니다.
    설정 설명
    키 유형 Hyper Protect Crypto Services에서 관리할 키의 유형입니다. 키 유형 목록에서 **루트 키**를 선택하십시오.
    키 이름 키를 쉽게 식별할 수 있도록 해 주는 사용자가 읽을 수 있는 고유 별명입니다. 개인정보를 보호하려면 키 이름에 사용자 이름 또는 위치와 같은 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 키 링에 추가됩니다. 키 링에 대한 자세한 정보는 키 링 관리를 참조하십시오.
    키 자료

    서비스에 저장하고 관리할 base64로 인코딩된 키 자료입니다(예: 기존 키-랩핑 키). 자세한 정보는 키 자료를 Base64로 인코딩을 참조하십시오. 키 자료가 다음 요구사항을 충족하는지 확인하십시오.

    • 키는 128, 192또는 256비트에 해당하는 16, 24또는 32바이트길이여야 합니다.
    • 키는 base64로 인코딩되어야 합니다.
    만기 날짜 (선택사항) 키가 만료되는 날짜 및 시간을 설정하십시오. 만기 날짜 이후에는 키가 비활성화 상태로 이동합니다. 키 상태에 대한 자세한 정보는 암호화 키의 라이프사이클 모니터링을 참조하십시오.
    설명 (선택사항) 키에 대한 자세한 설명을 추가하십시오. 길이는 2-240자여야 합니다.
  6. 키의 세부사항 채우기를 완료한 후 키 가져오기를 클릭하여 확인하십시오.

API를 사용하여 루트 키 가져오기

다음 엔드포인트에 대한 POST 호출을 작성하여 대칭 키를 Hyper Protect Crypto Services에 가져오십시오.

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' \
      -d '{
     "metadata": {
       "collectionType": "application/vnd.ibm.kms.key+json",
       "collectionTotal": 1
     },
     "resources": [
       {
       "type": "application/vnd.ibm.kms.key+json",
       "name": "<key_alias>",
       "description": "<key_description>",
       "expirationDate": "<YYYY-MM-DDTHH:MM:SS.SSZ>",
       "payload": "<key_material>",
       "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 검색을 참조하십시오.
    correlation_ID 트랜잭션을 추적하고 상관시키는 데 사용되는 고유 ID입니다.
    key_alias 필수입니다. 키를 쉽게 식별할 수 있도록 해 주는 사용자가 읽을 수 있는 고유 이름입니다. 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오.
    key_description 키에 대한 자세한 설명입니다. 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오.
    YYYY-MM-DD

    HH:MM:SS.SS

    시스템에서 키가 만료되는 날짜 및 시간입니다(RFC 3339 형식). expirationDate 속성이 생략되면 키가 만료되지 않습니다.
    key_material

    서비스에 저장하고 관리할 base64로 인코딩된 키 자료입니다(예: 기존 키-랩핑 키). 자세한 정보는 키 자료를 Base64로 인코딩을 참조하십시오. 키 자료가 다음 요구사항을 충족하는지 확인하십시오.

    • 키는 128, 192또는 256비트에 해당하는 16, 24또는 32바이트길이여야 합니다.
    • 키는 base64로 인코딩되어야 합니다.
    key_type 키 자료 서비스를 중단할지 여부를 판별하는 부울 값입니다. extractable 속성을 false 로 설정하면 서비스가 키를 wrap 또는 unwrap 조작에 사용할 수 있는 루트 키로 지정합니다.

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

    성공한 POST api/v2/keys 응답은 기타 메타데이터와 함께 키의 ID 값을 리턴합니다. 이 ID는 키에 지정된 고유 ID이며 Hyper Protect Crypto Services 키 관리 서비스 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>'
    

CLI를 사용하여 루트 키 가져오기

Hyper Protect Crypto Services에 통합된 Key Protect CLI를 사용하여 루트 키를 가져오려면 다음 단계를 완료하십시오.

  1. Key Protect CLI를 설정하십시오.

  2. 다음 명령을 사용하여 루트 키를 가져오십시오.

    ibmcloud kp key create
    

    Key Protect CLI 참조에서 이 명령에 대한 추가 매개변수를 찾을 수 있습니다.

키 자료를 base64로 인코딩

기존 루트 키를 가져오는 경우 서비스에 저장하고 관리할 암호화된 키 자료를 포함해야 합니다.

OpenSSL을 사용하여 기존 키 자료 인코딩

  1. OpenSSL을 다운로드하여 설치하십시오.

  2. 다음 명령을 실행하여 키 자료를 base64로 인코딩하십시오.

    $ openssl base64 -in <infile> -out <outfile>
    

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

    표 3. 키 자료를 base64 인코드하는 데 필요한 변수를 설명합니다.
    가변 설명
    infile 키 자료 문자열이 있는 파일의 이름입니다. 키가 128, 192 또는 256비트에 해당하는 16, 24 또는 32바이트인지 확인하십시오.
    outfile 명령 실행 시 base64 인코딩 키 자료가 작성되는 파일의 이름입니다.

    파일이 아닌 명령행에서 base64 자료를 출력하려면 openssl enc -base6<<< '<key_material_string>' 명령을 실행하십시오. 여기서 key_material al_string은 가져온 키에 대한 키 자료 입력입니다.

OpenSSL을 사용하여 새 키 자료 작성 및 인코딩

  1. OpenSSL을 다운로드하여 설치하십시오.

  2. 다음 명령을 실행하여 키 자료를 base64로 인코딩하십시오.

    $ openssl rand <byte_length> -base64
    

    예제 요청의 byte_length 변수를 바이트 단위로 측정되는 키의 길이로 대체하십시오. 허용 가능한 바이트 길이는 128, 192 또는 256비트에 해당하는 16, 24 또는 32바이트입니다.

다음에 수행할 작업