수동으로 키 순환
IBM® Key Protect for IBM Cloud®를 사용하여 수동으로 루트 키를 순환할 수 있습니다.
루트 키를 회전하면 키에 새 키 자료가 추가됩니다. 이 프로세스는 데이터 다시 랩핑 또는 다시 암호화에 사용할 수 있는 새 키 버전을 작성합니다.
키 순환을 통해 산업 표준 및 암호화 우수 사례를 충족시키는 방법을 알아보려면 암호화 키 순환을 참조하십시오.
순환은 루트 키에만 사용 가능합니다. Key Protect에서 키 순환 옵션에 대해 자세히 알아보려면 키 순환 옵션 비교를 참조하십시오.
콘솔에서 루트 키 순환
루트 키를 작성한 후 키를 순환하려면 다음 단계를 완료하십시오.
-
메뉴 > 리소스 목록으로 이동하여 리소스 목록을 보십시오.
-
IBM Cloud 리소스 목록에서 Key Protect의 프로비저닝된 인스턴스를 선택하십시오.
-
애플리케이션 세부사항 페이지에서 키 테이블을 사용하여 서비스에서 키를 찾아보십시오. 키가 많다면 검색 창을 사용하여 활성화된 키(다른 종류의 키는 순환할 수 없기 때문), 특정 키링에 포함된 키, 특정 별칭이 지정된 키를 필터링하세요.
-
키를 찾은 후, ‘작업’ 아이콘(⋯)을 클릭하여 회전하려는 키에 대한 옵션 목록을 엽니다.
-
옵션 메뉴에서 ‘회전’을 클릭하여 ‘회전 ’ 사이드 패널을 엽니다.
-
여기에서 ‘회전’을 클릭하면 키를 한 번 회전할 수 있습니다. 이 키가 가져온 것이라면, 새로운 키 자료를 제공해야 합니다.
또한 원하는 간격으로 이 키에 대한 회전 정책을 설정할 수도 있습니다:
- ‘키 옵션’으로 돌아가서 ‘회전 정책 편집’을 클릭하세요
- 정책 활성화
- 원하는 키 교체 주기로 30일을 선택하세요
예를 들어, 키가
2개월마다 순환되도록 설정된 경우 특정 달의 일 수에 상관없이 60일마다 순환됩니다. -
‘저장’을 클릭하여 이 정책을 적용하십시오.
이후에 생성되는 모든 키에 대해 순환 정책을 설정하는 인스턴스에 대한 순환 정책 설정에 대해 알아보려면 순환 정책 설정을 확인하세요.
가져온 루트 키에 한해 서비스에 저장하고 관리할 base64 인코딩된 키 자료를 추가해야 합니다. 키 자료가 128, 192 또는 256비트이고 데이터 바이트(예: 256비트의 경우 32바이트)가 base64 인코딩을 사용하여 인코딩되었는지 확인합니다.
API로 루트 키 순환
다음 엔드포인트에 대한 POST 호출을 수행하여 루트 키를 순환할 수 있습니다.
https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate
-
순환할 루트 키의 ID를 복사하십시오.
다음 Key Protect 인스턴스의 키에 대한 ID를 키 목록을 검색하거나 Key Protect 대시보드.
-
다음과 같이 새로운 키 자료를 제공하여 키를 회전하십시오.
curl명령.$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate" \ -H "accept: application/vnd.ibm.kms.key_action+json" \ -H "authorization: Bearer <IAM_token>" \ -H "bluemix-instance: <instance_ID>" \ -H "x-kms-key-ring: <key_ring_ID>" \ -H "content-type: application/vnd.ibm.kms.key_action+json" \ -d '{ "payload": "<key_material>" }'다음 표에 따라 예제 요청의 변수를 대체하십시오.
| 가변 | 설명 |
|---|---|
| 지역 | 필수. us-south 또는 eu-gb 과 같은 지역 약어는 Key Protect 인스턴스가 위치한 지리적 영역을 나타냅니다.자세한 정보는 지역 서비스 엔드포인트를 참조하십시오. |
| keyID_or_alias | 필수. 순환하려는 루트 키의 고유 ID 또는 별명입니다. |
| IAM_token | 필수. 사용자의 IBM Cloud 액세스 토큰입니다. curl 요청에 Bearer 값을 포함하여 IAM 토큰의 전체 컨텐츠를 포함하십시오. 자세한 내용은 ‘액세스 토큰 가져오기’를 참조하십시오. |
| instance_ID | 필수. Key Protect 서비스 인스턴스에 지정된 고유 ID입니다. 자세한 내용은 “인스턴스 ID 가져오기”를 참조하십시오. |
| key_ring_ID | 선택사항. 키가 속한 키 링의 고유 ID입니다. 지정되지 않은 경우 Key Protect은(는) 지정된 인스턴스와 연관된 모든 키 링에서 키를 검색합니다. 보다 최적화된 요청을 위해 키 링 ID를 지정하는 것이 좋습니다. 참고: x-kms-key-ring 헤더 없이 생성된 키의 키링 ID는 default입니다.For more information, see 키 그룹화. |
| key_material | 선택사항. 서비스에 저장하고 관리할 새 base64로 인코딩된 키 자료입니다. 이 값은 키를 서비스에 추가할 때 초기에 키 자료를 가져온 경우 필수입니다. Key Protect 에서 처음 생성된 키를 회전시키려면, payload 속성을 생략하고 빈 요청 엔티티 본문을 전달하십시오. 가져온 키를 순환하려면 다음 요구사항을 충족하는 키 자료를 제공하십시오. 키는 128, 192 또는 256비트여야 합니다. 데이터 바이트(예: 256비트에 해당하는 32바이트)는 base64 인코딩을 사용하여 인코딩해야 합니다. |
성공한 순환 요청은 루트 키가 새 키 자료로 바뀌었음을 표시하는 HTTP 204 No Content 응답을 리턴합니다.
선택사항: 키 순환 검증
목록 키 요청을 실행하여 키가 순환되었는지 확인할 수 있습니다.
$ 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 토큰입니다.
응답 엔티티-본문에 있는 lastRotateDate 및 keyVersion 값을 검토하여 키가 마지막으로 순환된 날짜 및 시간을 검사하십시오.
{
"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",
"state": 1,
"extractable": false,
"crn": "crn:v1:bluemix:public:kms:us-south:a/f047b55a3362ac06afad8a3f2f5586ea:12e8c9c2-a162-472d-b7d6-8b9a86b815a6:key:02fd6835-6001-4482-a892-13bd2085f75d",
"imported": false,
"creationDate": "2020-03-12T03:50:12Z",
"createdBy": "...",
"algorithmType": "Deprecated",
"algorithmMetadata": {
"bitLength": "256",
"mode": "Deprecated"
},
"algorithmBitSize": 256,
"algorithmMode": "Deprecated",
"lastUpdateDate": "2020-03-12T03:50:12Z",
"lastRotateDate": "2020-03-12T03:49:01Z",
"keyVersion": {
"id": "2291e4ae-a14c-4af9-88f0-27c0cb2739e2",
"creationDate": "2020-03-12T03:50:12Z"
},
"dualAuthDelete": {
"enabled": false
},
"deleted": false
}
]
}
keyVersion 속성에는 최신 루트 키 버전에 대해 설명하는 식별 정보가 포함되어 있습니다.
다음 항목을 사용하여 키에 사용 가능한 버전을 나열할 수도 있습니다. Key Protect API. 자세히 알아보려면 키 버전 보기를 참조하십시오.
가져오기 토큰을 사용하여 키 순환
초기에 가져오기 토큰을 사용하여 루트 키를 가져온 경우 다음 엔드포인트에 대한 POST 호출을 수행하여 키를 순환할 수 있습니다.
https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate
-
인증 정보를 검색하여 서비스에서 키에 대한 작업을 수행하십시오.
키를 순환시키려면 인스턴스 또는 키에 대한 작성자 또는 관리자 액세스 정책이 지정되어 있어야 합니다. IAM 역할을 Key Protect 서비스 조치에 맵핑하는 방법을 알아보려면, 서비스 액세스 역할을 확인하십시오.
-
순환할 키의 ID를 검색하십시오.
지정된 키에 대한 ID를 검색하기 위해
GET /v2/keys요청을 통해, 또는 Key Protect 대시보드로 이동합니다. -
가져오기 토큰을 작성 및 검색하십시오.
-
가져오기 토큰을 사용하여 기존 키를 순환하는 데 사용할 키 자료를 암호화하십시오.
가져오기 토큰을 사용하는 방법에 대해 알아보려면 튜토리얼: 암호화 키 작성 및 가져오기를 확인하십시오.
-
다음 명령을 실행하여 기존 키를 새로운 키 자료로 교체하십시오
curl명령의 JSON 키 및 값에 대한 설명입니다.$ curl -X POST \ "https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/actions/rotate" \ -H "authorization: Bearer <IAM_token>" \ -H "bluemix-instance: <instance_ID>" \ -d '{ "type": "application/vnd.ibm.kms.key+json", "name": "<key_alias>", "description": "<key_description>", "extractable": <key_type>, "payload": "<encrypted_key>", "encryptionAlgorithm": "RSAES_OAEP_SHA_256", "encryptedNonce": "<encrypted_nonce>", "iv": "<iv>" }'다음 표에 따라 예제 요청의 변수를 대체하십시오.
| 가변 | 설명 |
|---|---|
| 지역 | 필수. us-south 또는 eu-gb 과 같은 지역 약어는 Key Protect 인스턴스가 위치한 지리적 영역을 나타냅니다.자세한 내용은 ‘지역별 서비스 엔드포인트’를 참조하십시오. |
| keyID_or_alias | 필수. 순환하려는 키의 고유 ID 또는 별명입니다. |
| IAM_token | 필수. 사용자의 IBM Cloud 액세스 토큰입니다. curl 요청에 Bearer 값을 포함하여 IAM 토큰의 전체 컨텐츠를 포함하십시오. 자세한 내용은 ‘액세스 토큰 가져오기’를 참조하십시오. |
| instance_ID | 필수. Key Protect 서비스 인스턴스에 지정된 고유 ID입니다. 자세한 내용은 “인스턴스 ID 가져오기”를 참조하십시오. |
| key_alias | 필수. 키를 쉽게 식별할 수 있도록 해 주는 사용자가 읽을 수 있는 고유 이름입니다. 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오. |
| key_description | 선택사항. 키에 대한 자세한 설명입니다. 개인정보를 보호하려면 개인 데이터를 키의 메타데이터로 저장하지 마십시오. |
| encrypted_key | 필수. 서비스에 저장하고 관리할 암호화된 키 자료입니다. 값은 base64로 인코딩되어야 합니다. 키 자료가 다음 요구 사항을 충족하는지 확인하십시오: 키 길이는 128, 192 또는 256비트여야 합니다. 데이터 바이트(예: 256비트에 해당하는 32바이트)는 base64 인코딩을 사용하여 인코딩해야 합니다. |
| key_type | 선택사항. 키 자료 서비스를 중단할지 여부를 판별하는 부울 값입니다. extractable 속성을 false로 설정하면, 해당 키는 래핑 또는 언래핑 작업에 사용할 수 있는 루트 키가 됩니다. |
| encrypted_nonce | 필수. 요청의 일부로 전송하는 비트가 수신하는 비트와 정확하게 일치하도록 보장하는 AES-GCM 암호화된 난스(nonce)입니다. 난스(nonce)는 복원하는 키를 유효성 검증합니다. 자세한 내용은 ‘튜토리얼: 암호화 키 생성 및 가져오기’를 참조하십시오. |
| iv | 필수. 난스(nonce)를 암호화할 때 AES-GCM 알고리즘으로 생성되는 초기화 벡터(IV)입니다. 이 값은 ‘ Key Protect ’ 시스템에 키를 저장할 때 키를 복호화하는 데 사용됩니다. 자세한 내용은 ‘튜토리얼: 암호화 키 생성 및 가져오기’를 참조하십시오. |
성공한 순환 요청은 루트 키가 새 키 자료로 바뀌었음을 표시하는 HTTP 204 No Content 응답을 리턴합니다.
선택사항: 가져오기 토큰 키 순환 검증
키 메타데이터 가져오기 요청을 실행하여 가져오기 토큰을 통해 가져온 키가 순환되었는지 확인할 수 있습니다.
$ curl -X GET \
"https://<region>.kms.cloud.ibm.com/api/v2/keys/<keyID_or_alias>/metadata" \
-H "accept: application/vnd.ibm.kms.key+json" \
-H "authorization: Bearer <IAM_token>" \
-H "bluemix-instance: <instance_ID>"
여기서 <keyID_or_alias>은(는) 키의 ID 또는 별명이고, <instance_ID>은(는) 인스턴스의 이름이며, <IAM_token>은(는) IAM 토큰입니다.
응답 엔티티-본문에 있는 lastRotateDate 및 keyVersion 값을 검토하여 키가 마지막으로 순환된 날짜 및 시간을 검사하십시오.
다음 항목을 사용하여 키에 사용 가능한 버전을 나열할 수도 있습니다. Key Protect API. 자세히 알아보려면 키 버전 보기를 참조하십시오.