표준 키 가져오기
IBM Cloud 콘솔을 사용하여 기존 암호화 키를 추가할 수 있습니다.
Key Protect API를 사용하여 프로그래밍 방식으로 기존 암호화 키를 추가할 수 있습니다.
콘솔을 사용하여 표준 키 가져오기
서비스 인스턴스를 작성한 후 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로 인코딩되어야 합니다. |
| 키 별명 | 선택사항. 키 별명은 표시 이름의 한계를 초과하여 식별하고 그룹화하는 데 사용할 수 있는 키를 설명하는 방법입니다. 키의 별명은 최대 5개일 수 있습니다. |
| 키 링 | 선택사항. 키 링은 필요한 대로 해당 그룹화를 개별적으로 관리하는 데 사용할 수 있는 키 그룹입니다. 모든 키는 키 링의 일부여야 합니다. 키 링이 선택되지 않으면 키가 default 키 링에 배치됩니다. 키 링에 작성 중인 키를 배치하려면 해당 키 링에
대한 관리자 역할이 있어야 합니다. 역할에 대한 자세한 정보는 사용자 액세스 관리를 확인하십시오. |
키의 세부 정보를 모두 입력한 후 ‘추가’를 클릭하여 확인하십시오.
특정 키 링의 관리자 라면, ‘키 링 ’ 패널에서 직접 키를 추가할 수 있습니다. 키링의 동작 메뉴(⋯)에서 ‘새 키 추가’를 클릭하세요. ‘키’ 페이지에서 ‘추가’를 클릭했을 때와 동일한 패널이 열리지만, ‘키링’ 필드에는 선택한 키링 이름이 미리 입력되어 있습니다.
여러 계정이나 환경에서 표준 키를 일관되게 가져오고 관리해야 하는 경우 Key Protect 키 모듈을 사용하여 이를 자동화할 수 있습니다. Key Protect 인스턴스와 키 링을 프로비저닝하는 전체 설정은 모든 것이 포함된 Key Protect 모듈을 참조하세요. 개요는 Terraform IBM 모듈을 참조하세요.
표준 키 가져오기
다음 엔드포인트에 대한 POST 호출을 작성하여 표준 키를 가져오십시오.
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" \ -H "correlation-id: <correlation_ID>" \ -H "prefer: <return_preference>" \ -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 속성을 true 로 설정하면, 서비스는 해당 키를 앱이나 서비스에 저장할 수 있는 표준 키로 지정합니다. |
개인 데이터의 기밀성을 보호하려면 서비스에 키를 추가할 때 사용자 이름 또는 위치와 같은 PII(Personally Identifiable Information)를 입력하지 않도록 하십시오. 개인 식별 정보(PII)에 대한 더 많은 예시는 NIST 특별 간행물 800-122의 2.2절을 참조하십시오.
성공한 POST api/v2/keys 응답은 기타 메타데이터와 함께 키의 ID 값을 리턴합니다. ID는 로컬 키에 지정된 고유 ID이며 Key Protect API.
선택사항: 표준 키 가져오기 확인
목록 키 요청을 발행하여 표준 키를 가져왔는지 확인할 수 있습니다.
$ 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>"
여기서 <instance_ID>은(는) 인스턴스의 이름이고 <IAM_token>은(는) IAM 토큰입니다.
키 자료를 base64로 인코딩
기존 표준 키를 가져올 때 서비스에 저장하고 관리할 암호화된 키 자료를 포함해야 합니다.
OpenSSL을 사용하여 기존 키 자료 암호화
주요 자료를 인코딩하려면 먼저 OpenSSL 다운로드하여 설치해야 합니다.
OpenSSL 다운로드하여 설치한 후에는 키 자료를 인코딩하는 데 권장되는 두 가지 명령어가 있습니다. 두 방법 모두 <key_material_string>이든
```sh {: pre}
openssl base64 -in <infile> -out <outfile>
```
Replace the variables in the example request according to the following table.
| 가변 | 설명 |
|---|---|
| infile | 키 자료 문자열이 저장된 바이너리 파일의 이름입니다. 파일 크기가 7,500바이트보다 크지 않은지 확인합니다. |
| outfile | 명령이 실행되면 base64로 인코딩된 키 자료가 작성될 파일의 이름입니다. |
파일이 아닌 명령행에서 직접 base64 자료를 출력하려면 다음 명령을 실행하십시오.openssl enc -base64 <<< '<key_material_string>' 여기서 key_material_string은 가져온 키에 대한 키 자료 입력입니다.
파일에 없는 키 자료를 기본 64 인코딩하려는 경우 발행할 수 있습니다:
```sh {: pre}
echo -n <password> | base64
```
Where "password" is the key material you want to use.
추가 문자(예: 불필요한 줄바꿈)가 포함되는 것을 방지하려면, 특히 base64 문자열을 콘솔에 게시할 경우 base64 을 클립보드에 복사하는 것이 권장되는 방법입니다.
OpenSSL을 사용하여 새 키 자료 작성 및 인코딩
특정 바이트 길이의 무작위 base64 인코딩 키 자료를 작성하려면 이 프로세스를 사용하십시오. 32바이트(256비트)가 권장됩니다.
표준 키와 루트 키의 특성이 같게 하려면 표준 키로 사용할 16-, 24- 또는 32바이트 키 자료를 작성합니다. 표준 키는 서비스를 종료할 수 있는 키입니다. 표준 키는 앱과 서비스에서 자주 사용됩니다.
-
다운로드 및 설치 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 참조 문서를 확인해 보세요.