루트 키 가져오기
기존 루트 키를 가져와 보호하고 관리하는 데 IBM® Key Protect for IBM Cloud®을(를) 사용할 수 있습니다.
루트 키는 클라우드에서 암호화된 데이터의 보안을 보호하는 데 사용되는 대칭 키-랩핑 키입니다. Key Protect로 루트 키를 가져오는 데 대한 자세한 정보는 클라우드로 암호화 키 가져오기를 참조하십시오.
키 자료 작성 및 암호화를 위한 옵션을 검토하여 키 가져오기를 계획하십시오. 보안을 추가하려면 클라우드로 키 자료를 가져오기 전에 이 키 자료를 암호화하도록 가져오기 토큰을 사용하여 키 자료의 보안 가져오기를 사용하도록 설정할 수 있습니다.
콘솔을 사용하여 루트 키 가져오기
서비스 인스턴스를 작성한 후 IBM Cloud 콘솔을 사용하여 키를 가져오려면 다음 단계를 완료하십시오.
Key Protect 인스턴스에 대한 이중 권한 부여 설정을 사용으로 설정하는 경우 서비스에 추가한 키를 삭제하려면 두 사용자의 권한이 필요함에 유의하십시오.
-
메뉴 > 리소스 목록으로 이동하여 리소스 목록을 보십시오.
-
IBM Cloud 리소스 목록에서 Key Protect의 프로비저닝된 인스턴스를 선택하십시오.
-
키를 가져오려면 ‘추가’를 클릭하고 ‘키 가져오기 ’ 창을 선택하십시오.
키의 세부사항을 지정하십시오.
| 설정 | 설명 |
|---|---|
| 키 유형 | Key Protect에서 관리할 키의 유형입니다. 루트 키 단추를 선택하십시오. |
| 이름 | 키를 쉽게 식별하기 위한 사용자가 읽을 수 있는 별명입니다. 길이는 2 - 90자(포함)여야 합니다. 개인정보를 보호하려면 키 이름에 사용자 이름 또는 위치와 같은 PII(Personally Identifiable Information)가 포함되지 않았는지 확인하십시오. 키 이름은 고유하지 않아도 됩니다. |
| 키 자료 | 서비스에 저장하고 관리할 base64로 인코딩된 키 자료입니다(예: 기존 키-랩핑 키). 자세한 정보는 키 자료를 base64로 인코딩을 확인하십시오. 키 자료의 길이가 16, 24 또는 32바이트인지 확인하고 길이가 128, 192 또는 256비트에 해당하는지 확인하십시오. 또한 키는 base64로 인코딩되어야 합니다. |
| 키 설명 | 선택사항. 설명은 별명 또는 해당 이름을 사용하여 수행할 수 없는 방식으로 키에 대한 정보 (예: 해당 목적을 설명하는 구문) 를 추가하는 유용한 방법입니다. 이 설명은 2자 이상 240자이하여야 하며 나중에 변경할 수 없습니다. 개인정보 보호를 위해, 키의 설명에 이름이나 위치와 같은 개인 정보를 사용하지 마십시오. |
| 키 별명 | 선택사항. 키 별명은 표시 이름의 한계를 초과하여 식별하고 그룹화하는 데 사용할 수 있는 키를 설명하는 방법입니다. 키의 별명은 최대 5개일 수 있습니다. |
| 키 링 | 선택사항. 키 링은 필요한 대로 해당 그룹화를 개별적으로 관리하는 데 사용할 수 있는 키 그룹입니다. 모든 키는 키 링의 일부여야 합니다. 키 링이 선택되지 않으면 키가 default 키 링에 배치됩니다. 키 링에 작성 중인 키를 배치하려면 해당 키 링에
대한 관리자 역할이 있어야 합니다. 역할에 대한 자세한 정보는 사용자 액세스 관리를 확인하십시오. |
키의 세부 정보를 모두 입력한 후 ‘추가’를 클릭하여 확인하십시오.
특정 키 링의 관리자 라면, ‘키 링 ’ 패널에서 직접 키를 추가할 수 있습니다. 키링의 동작 메뉴(⋯)에서 ‘새 키 추가’를 클릭하세요. ‘키’ 페이지에서 ‘추가’를 클릭했을 때와 동일한 패널이 열리지만, ‘키링’ 필드에는 선택한 키링 이름이 미리 입력되어 있습니다.
여러 계정이나 환경에서 일관되게 루트 키를 가져오고 관리해야 하는 경우 Key Protect 키 모듈을 사용하여 이 작업을 자동화할 수 있습니다. Key Protect 인스턴스와 키 링을 프로비저닝하는 전체 설정은 모든 것이 포함된 Key Protect 모듈을 참조하세요. 개요는 Terraform IBM 모듈을 참조하세요.
API를 사용하여 루트 키 가져오기
다음 엔드포인트에 대한 POST 호출을 작성하여 대칭 키를 Key Protect로 가져오십시오.
https://<region>.kms.cloud.ibm.com/api/v2/keys
-
다음
curl명령을 사용하여 Key Protect API 를 호출하십시오.$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/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_name>", "aliases": [alias_list], "description": "<key_description>", "expirationDate": "<expiration_date>", "payload": "<key_material>", "extractable": <key_type> } ] }'다음 표에 따라 예제 요청의 변수를 대체하십시오.
| 가변 | 설명 |
|---|---|
| 지역 | 필수. us-south 또는 eu-gb 과 같은 지역 약어는 Key Protect 인스턴스가 위치한 지리적 영역을 나타냅니다.자세한 내용은 ‘지역별 서비스 엔드포인트’를 참조하십시오. |
| IAM_token | 필수. 사용자의 IBM Cloud 액세스 토큰입니다. curl 요청에 Bearer 값을 포함하여 IAM 토큰의 전체 컨텐츠를 포함하십시오. 자세한 내용은 ‘액세스 토큰 가져오기’를 참조하십시오. |
| instance_ID | 필수. Key Protect 서비스 인스턴스에 지정된 고유 ID입니다. 자세한 내용은 “인스턴스 ID 가져오기”를 참조하십시오. |
| correlation_ID | 트랜잭션을 추적하고 상관시키는 데 사용되는 고유 ID입니다. |
| return_preference | POST와 DELETE 오퍼레이션에 대한 서버 동작을 변경하는 헤더입니다. return_preference 변수를 return=minimal로 설정하면 서비스는 응답 엔티티-본문에 키 이름 및 ID 값과 같은 키 메타데이터만 리턴합니다. 변수를 return=representation으로 설정하면 서비스가 키 자료와 키 메타데이터를 모두 리턴합니다. |
| key_name | 필수. 키를 쉽게 식별할 수 있도록 해 주는 사용자가 읽을 수 있는 고유 이름입니다. 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오. |
| alias_list | 선택사항. 키에 지정되었으며 사용자가 읽을 수 있는 하나 이상의 고유한 별명입니다. 중요사항: 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오. 각 별칭은 영문자와 숫자로만 구성되어야 하며, 대소문자를 구분하고, 공백이나 - 또는 _ 이외의 특수 문자를 포함할 수 없습니다. 별칭은 UUID일 수 없으며, 다음의 Key Protect 예약된 이름이어서는 안 됩니다: allowed_ip, key, keys, metadata, policy, policies, registration, registrations, ring, rings, rotate, wrap, unwrap, rewrap, version, versions. |
| key_description | 선택사항. 키에 대한 자세한 설명입니다. 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오. |
| expiration_date | 선택사항. 시스템에서 키가 만료되는 날짜 및 시간으로, RFC 3339 형식입니다(YYYY-MM-DD HH:MM:SS.SS, 예: 2019-10-12T07:20:50.52Z). 키의 만기 날짜 후 1시간 이내에 키가 비활성화됨 상태로 전이됩니다. expirationDate 속성이 생략되면 키가 만료되지 않습니다. |
| key_material | 필수. 서비스에 저장하고 관리하려는 기존 키-랩핑 키인 base64로 인코딩된 키 자료입니다. 자세한 내용은 Base64 에서 키 자료를 인코딩하는 방법을 확인해 보세요. 키 자료가 다음 요구사항을 충족하는지 확인하십시오. 표준 키의 크기는 최대 7,500바이트입니다. 키는 base64로 인코딩되어야 합니다. |
| key_type | 키 자료 서비스를 중단할지 여부를 판별하는 부울 값입니다. extractable 속성을 false 로 설정하면, 서비스는 해당 키를 래핑 또는 언래핑 작업에 사용할 수 있는 루트 키로 지정합니다. |
개인 데이터의 기밀성을 보호하려면 서비스에 키를 추가할 때 사용자 이름 또는 위치와 같은 PII(Personally Identifiable Information)를 입력하지 않도록 하십시오.
성공한 POST api/v2/keys 응답은 기타 메타데이터와 함께 키의 ID 값을 리턴합니다. ID는 키에 지정되어 있으며 Key Protect API에 대한 후속 호출에 사용되는 고유 ID입니다.
선택사항: Key Protect 인스턴스에서 키를 찾아보기 위해 다음 호출을 실행하여 키가 추가되었는지 확인하십시오.
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys" \
-H "accept: application/vnd.ibm.collection+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
키 자료를 base64로 인코딩
기존 루트 키를 가져오는 경우 서비스에 저장하고 관리할 암호화된 키 자료를 포함해야 합니다.
OpenSSL을 사용하여 기존 키 자료 암호화
이 프로세스를 사용하여 파일에 있는 키 자료의 컨텐츠를 암호화할 수 있습니다.
-
OpenSSL을 다운로드하여 설치하십시오.
-
다음 명령을 실행하여 키 자료 문자열을 base64로 인코딩하십시오.
openssl base64 -in <infile> -out <outfile>다음 표에 따라 예제 요청의 변수를 대체하십시오.
| 가변 | 설명 |
|---|---|
| infile | 키 자료 문자열이 상주하는 파일의 이름입니다. 키 길이는 16, 24 또는 32바이트여야 하며, 128, 192 또는 256비트에 해당합니다. 키는 base64로 인코딩되어야 합니다. |
| outfile | 명령이 실행되면 base64로 인코딩된 키 자료가 작성될 파일의 이름입니다. |
파일이 아닌 명령행에서 직접 base64 자료를 출력하려면 openssl enc -base64 <<< '<key_material_string>'을(를) 실행하십시오. 여기서 key_material_string은 가져온 키에 대한 키 자료 입력입니다.
OpenSSL을 사용하여 새 키 자료 작성 및 인코딩
특정 바이트 길이의 무작위 base64 인코딩 키 자료를 작성하려면 이 프로세스를 사용하십시오. 32바이트(256비트)가 권장됩니다.
-
OpenSSL을 다운로드하여 설치하십시오.
-
다음 명령을 실행하여 키 자료 문자열을 base64로 인코딩하십시오.
openssl rand -base64 <byte_length>다음 표에 따라 예제 요청의 변수를 대체하십시오.
| 가변 | 설명 |
|---|---|
| byte_length | 키의 길이(바이트)입니다. 허용 가능한 바이트 길이는 16, 24 또는 32바이트이며, 128, 192 또는 256비트에 해당합니다. 키는 base64로 인코딩되어야 합니다. |
키 자료 작성 예제
-
openssl rand -base64 16은 128비트 키 자료를 생성합니다. -
openssl rand -base64 24는 192비트 키 자료를 생성합니다. -
openssl rand -base64 32는 256비트 키 자료를 생성합니다.
다음에 수행할 작업
-
엔벨로프 암호화로 키를 보호하는 데 대해 자세히 알아보려면 키 랩핑을 확인하십시오.
-
키를 프로그래밍 방식으로 관리하는 방법에 대해 자세히 알아보려면 ‘ Key Protect ’ API 참조 문서를 확인해 보세요.