IBM Cloud Docs
Key Protect CLI 참조

Key Protect CLI 참조

IBM® Key Protect for IBM Cloud® CLI 플러그인의 최신 버전은 Key Protect인스턴스의 키를 안전하고 효율적으로 관리하는 방법을 제공합니다.

IBM Cloud CLI에 로그인하면 업데이트가 제공될 때 알림을 받습니다. Key Protect CLI 플러그인에 사용 가능한 명령 및 플래그를 사용할 수 있도록 CLI를 최신 상태로 유지하십시오.

참고

Key Protect CLI 플러그인을 설치하고 구성하려면 CLI 설정 에 대한 주제를 참조하십시오.

region-set 사용 방법을 보여 주는 예에서는 구성의 중요한 단계를 간략하게 설명합니다.

이전 버전

0.8 버전에 대한 이 문서에는 더 이상 사용되지 않는 명령어가 포함되어 있지 않습니다.

더 이상 사용되지 않는 모든 명령은 버전 0.4.0 및 0.5.2에서 작동합니다. 즉, 버전 0.5.2는 버전 0.3.9 및 0.4.0과 역호환 가능합니다.

예제

모든 명령에는 워크플로우의 컨텍스트에서 명령 사용 방법을 보여주는 Example 섹션이 있습니다.

예제에서는 다음을 가정합니다. openssljq 가 설치되었습니다.

많은 예제에서는 -i 매개변수 대신 Key Protect 인스턴스 ID와 관련하여 세션에 설정된 환경 변수를 활용합니다. 이 방식으로 설정된 변수는 필요한 경우 적절한 플러그인에서 자동으로 사용합니다.

# export the Key Protect instance id in the command line
$ export KP_INSTANCE_ID=<INSTANCE_ID>

ibmcloud kp 명령 요약

**ibmcloud kp**는 여기에 나열된 명령을 지원합니다.

kp import-token 명령

kp import-token 명령은 보안 가져오기를 위한 루트 키를 준비합니다.

가져오기 토큰 관리를 위한 하위 명령어
하위 명령 상태 v0.8 설명
작성 가져오기 토큰 작성
key-encrypt 서비스로 가져온 키 암호화
nonce-encrypt kp import-token create로 생성된 난스(nonce) 암호화
show 가져오기 토큰 검색

kp instance 명령

kp instance 명령은 Key Protect 인스턴스에 저장되는 루트 키를 사용하십시오.

키 관리를 위한 하위 명령
하위 명령 상태 v0.8 설명
정책 인스턴스와 연관된 정책 나열
policy-update allowed-network "허용된 네트워크"의 인스턴스 정책 업데이트
policy-update dual-auth-delete "이중 권한 부여 삭제"의 인스턴스 정책 업데이트
policy-update rotation "rotation" 에 대한 인스턴스 정책 업데이트

kp key 명령

kp key 명령을 개별 키를 관리합니다.

키 관리를 위한 하위 명령
하위 명령 상태 v0.8 설명
alias-create 키를 고유하고 편리하게 참조하기 위해 별명 작성
cancel-delete 이전에 스케줄된 키 삭제 요청 취소
작성 키를 작성하거나 고유한 키 가져오기
삭제 키 삭제
사용 안함 키 사용 안함
사용 키 사용
정책 정책 목록 검색
policy-update dual-auth-delete "이중 권한 부여 삭제"의 키 정책 업데이트
policy-update rotation "로테이션"에 대한 키 정책 업데이트
복원 이전에 삭제된 루트 키 복원
순환 루트 키 순환
schedule-delete dual-auth-delete 정책을 사용하여 삭제될 키에 권한 부여
show 키 검색
동기화 키의 연관된 리소스 동기화
랩핑 해제 데이터 암호화 키 랩핑 해제
업데이트 키를 업데이트하여 새 키 링으로 전송
버전 모든 키 버전 나열
랩핑 데이터 암호화 키 랩핑

kp key-ring 명령

키 링 지원을 사용하면 **kp key-ring**을 사용하여 우수 사례에 맞게 키 그룹을 관리할 수 있습니다.

키링 관리를 위한 하위 명령어
하위 명령 상태 v0.8 설명
작성 kp 인스턴스 내에 키 링을 작성합니다.
삭제 kp 인스턴스 내에서 키 링 삭제

기타 kp 명령

다음 Key Protect 리소스 관리를 위한 추가 명령이 우수 사례를 지원할 수 있습니다.

기타 리소스 관리를 위한 명령
명령 상태 v0.8 설명
kp keys Key Protect 인스턴스에서 사용 가능한 키 나열
kp key-rings kp 인스턴스와 연관된 키 링 나열
kp region-set 다른 지역 엔드포인트를 대상으로 지정
kp registrations 루트 키와 기타 클라우드 리소스 간의 연관 나열
kp kmip(kp kmip) KMIP 어댑터 및 연관된 자원을 작성하고 관리합니다.

키 별명키 작성, 키 사용 안함 및 여기에서 지원되는 '키 ID 또는 별명' 이 표시되는 모든 위치에 대한 예제에 표시된 대로 메소드의 ID로 사용할 수 있습니다.

도움말 보기

다음은 kp 도움말 정보의 예제입니다.

  • ibmcloud kp -h
  • ibmcloud kp import-token -h
  • ibmcloud kp key -h
  • ibmcloud kp keys -h

kp import-tokenkp key 명령에는 하위 명령이 있습니다. 다음 명령은 일부 하위 명령에 대한 도움말을 표시합니다.

  • ibmcloud kp import-token create -h
  • ibmcloud kp key delete -h

kp import-token create

가져오기 토큰을 작성하여 루트 키를 암호화하고 Key Protect 인스턴스에 저장되는 루트 키를 사용하십시오. 기본적으로 가져오기 토큰은 10분(600초) 후에 만료됩니다.

ibmcloud kp import-token create
     -i, --instance-id    INSTANCE_ID
    [-e, --expiration     EXPIRATION_TIME_SECONDS]
    [-m, --max-retrievals MAX_RETRIEVALS]

이 예제는 가져오기 토큰을 작성합니다. 가져오기 토큰은 noncepublic key로 구성됩니다.

난스(nonce)는 암호화 통신에서 한 번만 사용될 수 있는 임의의 숫자입니다.

# create an import token that expires in 5 minutes and allows 3 retrievals
$ ibmcloud kp import-token create --expiration 300 --max-retrievals 3

Created                         Expires                         Max Retrievals   Remaining Retrievals
2020-05-04 19:12:07 +0000 UTC   2020-05-04 19:17:07 +0000 UTC   3                3

# show the created token
$ ibmcloud kp import-token show

{
    "nonce": "8rf2ldP/zWm1Tjrb",
    "payload":
        "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo="
}

필수 매개변수

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -e, --expiration

    가져오기 토큰에 대한 만기 시간(초)을 지정합니다. 이 값은 가져오기 토큰 및 연관된 공개 키가 조작에 대해 유효한 기간을 판별합니다.

    최소값은 300초(5분)이며 최대값은 86400초(24시간)입니다. 기본값은 600초(10분)입니다.

  • -m, --max-retrievals

    가져오기 토큰에 대한 사용 횟수를 설정합니다. 이 값은 더 이상 액세스할 수 없게 될 때까지 만기 시간 내에 가져오기 토큰을 검색할 수 있는 횟수입니다. 기본값은 1입니다.

kp import-token key-encrypt

다음 Key Protect로 가져오는 키 자료를 Key Protect 인스턴스와 연관된 공용 키를 사용하여 암호화하십시오.

그런 다음 검색된 암호화 키를 ibmcloud kp key create 를 클릭하여 서비스로 키를 가져옵니다.

ibmcloud kp import-token key-encrypt
        -i, --instance-id INSTANCE_ID
        -k, --key         KEY_MATERIAL
        -p, --pubkey      PUBLIC_KEY
       [-a, --hash        HASH_ALGORITHM]

이 예는 다음에서 만든 공개 키를 사용하여 key material 를 암호화합니다 kp import-token create.

# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')

# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY

Encrypted Key
Ela33aTdDiKVUNryLeM/xwUEaKWvzY+u ...<redacted>... Asv7bZxvyZn9KNU=

필수 매개변수

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

  • -k, --key

    서비스에 저장하고 관리하는 base64로 인코딩된 키 자료입니다.

    -p, --pubkey

    Key Protect에서 분배한 base64로 인코딩된 공개 암호화 키입니다. 새 공개 키를 작성하려면 ibmcloud kp import-token create를 사용하십시오. 공개 키를 검색하려면 ibmcloud kp import-token show를 사용하십시오.

선택적 매개변수

  • -a, --hash

    키를 랩핑하는 데 사용되는 해시 알고리즘입니다. SHA1 및 SHA256이 지원됩니다. 기본값은 SHA256입니다. SHA1은 HPCS에서만 지원됩니다.

    이 옵션은 HPCS API를 사용하는 요청에서만 사용될 수 있는 암호화된 암호화된 키를 생성하는 데 사용됩니다. Key Protect 루트 키를 작성하려면 이 옵션을 사용하지 마십시오.

    HPCS(Hyper Protect Crypto Services)는 전용 키 관리 서비스 및 하드웨어 보안 모듈(HSM)입니다. HPCS는 Key Protect와 통합되어 키를 생성하고 암호화합니다. KYOK(Keep Your Own Key)) 기능도 HPCS에서 사용으로 설정됩니다.

참고

HPCS에 대한 자세한 정보는 다음을 참조하십시오. IBM Cloud Hyper Protect Crypto Services시작하기.

kp import-token nonce-encrypt

다음 Key Protect이(가) 서비스로 가져오는 키 자료를 사용하여 분배하는 난스(nonce) 값을 암호화하십시오.

그런 다음, 다음을 실행할 때 검색된 암호화된 난스 (nonce) 및 IV값을 제공하십시오. ibmcloud kp key create-키를 가져옵니다.

ibmcloud kp import-token nonce-encrypt
        -i, --instance-id INSTANCE_ID
        -k, --key         KEY_MATERIAL
        -n, --nonce       NONCE
    [-c, --cbc]

이 예에서는 nonce를 사용하여 key material를 암호화합니다.

난스(nonce)는 암호화 통신에서 한 번만 사용될 수 있는 임의의 숫자입니다.

# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')

# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE

Encrypted Nonce                            IV
mWQad1RHdWoFXFw/D9h8z43t/+0vIZc55VBBQg==   6nvOwUvQdowoD+3v

필수 매개변수

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

  • -k, --key

    서비스에 저장하고 관리하는 base64로 인코딩된 키 자료입니다.

    -n, --nonce

    키 가져오기 요청을 확인하는 데 사용되는 난스(nonce)입니다. 이 값은 base64로 인코딩됩니다. 난스 값을 검색하려면 ibmcloud kp import-token show을(를) 사용하십시오.

선택적 매개변수

  • -c, --cbc

    AES-CBC 암호화 알고리즘을 사용하여 난스(nonce)를 암호화합니다. 이 알고리즘 메소드는 HPCS에만 지원됩니다. 기본 암호화 알고리즘은 AES-GCM입니다.

    이 옵션은 HPCS API를 사용하는 요청에서만 사용될 수 있는 암호화된 난스(nonce)를 생성하는 데 사용됩니다. Key Protect 루트 키를 작성하려면 이 옵션을 사용하지 마십시오.

    HPCS(Hyper Protect Crypto Services)는 전용 키 관리 서비스 및 하드웨어 보안 모듈(HSM)입니다. HPCS는 Key Protect와 통합되어 키를 생성하고 암호화합니다. KYOK(Keep Your Own Key)) 기능도 HPCS에서 사용으로 설정됩니다.

참고

HPCS에 대한 자세한 정보는 다음을 참조하십시오. IBM Cloud Hyper Protect Crypto Services시작하기.

kp import-token show

가져오기 토큰 검색, Key Protect 인스턴스.

가져오기 토큰에는 공개 암호화 키와 난스(nonce)가 들어 있습니다. 검색된 공개 키 및 난스 (nonce) 를 인수로 제공하십시오. ibmcloud kp import-token nonce-encryptibmcloud kp import-token key-encrypt.

ibmcloud kp import-token show
    -i, --instance-id INSTANCE_ID

이 예제는 가져오기 토큰을 작성하고 결과를 표시합니다.

# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10

# show the created token
$ ibmcloud kp import-token show

{
    "nonce": "8rf2ldP/zWm1Tjrb",
    "payload":
        "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo="
}

# extract the nonce that was created by the "kp import-token create" command
$ ibmcloud kp import-token show | jq -r '.["nonce"]'

8rf2ldP/zWm1Tjrb

# extract the public key that was created by the "kp import-token create" command
$ ibmcloud kp import-token show | jq -r '.["payload"]'

LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=

필수 매개변수

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

kp instance policies

allowed networks (public-and-private 또는 private-only), allowed IP 정책, key create import 액세스, 메트릭 및 이중 권한 부여 삭제 (키를 삭제하려면 두 사용자의 권한이 필요함) 와 같은 인스턴스 정책에 대한 세부사항을 검색합니다.

ibmcloud kp instance policies
    [-i, --instance-id     INSTANCE_ID]
    [-p, --allowed-ip]
    [-a, --allowed-network]
    [-d, --dual-auth-delete]
    [-k, --key-create-import-access]
    [-m, --metrics]
    [-o, --output          OUTPUT]
    [-r, --rotation]

이 예에서는 명령과 결과를 사용하는 방법을 보여줍니다. 서비스에 조회 결과가 없는 경우 빈 배열([])이 리턴됩니다.

# update the instance policy and set the allowed network to public-and-private
$ ibmcloud kp instance policy-update allowed-network --enable --network-type public-and-private

Updating instance policy...
OK

# list the instance policies
$ ibmcloud kp instance policies

Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By        user id ...<redacted>...
Creation Date     2020-06-22T16:17:52Z
Last Updated      2020-06-22T16:17:52Z
Updated By        user id ...<redacted>...
Policy Type       allowedNetwork
Enabled           true
Network Allowed   public-and-private

# disable the instance allowed-network policy
$ ibmcloud kp instance policy-update allowed-network --disable

Updating instance policy...
OK

# list the instance policies - the policy exists and it's disabled
$ ibmcloud kp instance policies

Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By        user id ...<redacted>...
Creation Date     2020-06-22T16:17:52Z
Last Updated      2020-06-22T16:20:08Z
Updated By        user id ...<redacted>...
Policy Type       allowedNetwork
Enabled           false
Network Allowed   public-and-private

# list the instance policies and show the output as JSON
$ ibmcloud kp instance policies --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-22T16:17:52Z",
    "lastUpdated": "2020-06-22T16:20:08Z",
    "updatedBy": "user id ...<redacted>...",
    "policy_type": "allowedNetwork",
    "policy_data": { "enabled": false, "attributes": {   "allowed_network": "public-and-private" }
    }
  }
]

필수 매개변수

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -p, --allowed-ip

    "허용된 IP"에 대한 인스턴스 정책을 표시합니다.

  • -a, --allowed-network

    "허용된 네트워크"의 인스턴스 정책을 표시합니다.

  • -d, --dual-auth-delete

    "이중 권한 삭제"의 인스턴스 정책을 표시합니다.

  • -k, --key-create-import-access

    인스턴스의 키 작성 가져오기 액세스 정책 세부사항을 검색합니다.

  • -m, --metrics

    인스턴스의 메트릭 정책 세부사항을 검색합니다.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • -r, --rotation

    인스턴스의 순환 정책 세부사항을 검색합니다.

kp instance policy-update allowed-network

인스턴스에 대한 정책을 업데이트하고 허용 네트워크를 다음과 같이 설정합니다 public-and-private 또는 private-only.

allowed-network 정책은 인스턴스가 공용 또는 사설 네트워크에서 요청을 가져오지 못하도록 차단합니다.

기존 인스턴스의 경우 네트워크 액세스 정책은 설정된 후 적용됩니다.

자세한 정보는 네트워크 액세스 정책 관리를 참조하십시오.

ibmcloud kp instance policy-update allowed-network
    -i, --instance-id  INSTANCE_ID
    -d, --disable OR
    -e, --enable
    -t, --network-type NETWORK_TYPE

이 예제는 "허용된 네트워크" 정책을 "public-and-private"로 설정합니다.

# update the instance policy and set the allowed network to public-and-private
$ ibmcloud kp instance policy-update allowed-network --enable --network-type public-and-private

Updating instance policy...
OK

# list the instance policies
$ ibmcloud kp instance policies

Retrieving policy details for instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Created By        user id ...<redacted>...
Creation Date     2020-06-22T16:17:52Z
Last Updated      2020-06-22T18:17:32Z
Updated By        user id ...<redacted>...
Policy Type       allowedNetwork
Enabled           true
Network Allowed   public-and-private

필수 매개변수

  • -d, --disable

  • -e, --enable

    네트워크 액세스 정책을 사용 또는 사용 안함으로 설정합니다. 하나의 옵션이 필요합니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

  • -t, --network-type

    허용되는 네트워크 액세스의 유형을 지정합니다. 옵션은 public-and-private 또는 private-only입니다.

kp instance policy-update dual-auth-delete

dual-auth-delete 정책을 사용하여 암호화 키를 안전하게 삭제합니다. 키를 삭제하면 해당 컨텐츠 및 연관된 데이터가 파쇄됩니다. 키로 암호화된 모든 데이터는 액세스할 수 없습니다.

이중 권한 부여 정책이 있는 키를 삭제하려면 두 사용자의 권한이 필요합니다.

자세한 내용은 다음을 참조하세요 키 삭제에 이중 인증 정책 사용하기를 참조하세요.

참고

인스턴스에 대한 이중 권한 삭제는 키에 대한 이중 권한 삭제와 다릅니다.

키에 대한 dual-auth-delete를 사용으로 설정한 후에는 사용 안함으로 설정하거나 제거할 수 없습니다. 정책이 만료되려면 7일 동안 대기해야 합니다.

인스턴스에 대한 이중 권한 삭제는 언제든지 사용 또는 사용 안함으로 설정할 수 있습니다.

dual-auth-delete 정책이 있는 경우 인스턴스 정책을 변경해도 기존 키 정책은 변경되지 않습니다.

인스턴스 정책을 변경하면 새 키가 인스턴스 정책과 함께 적용됩니다.

ibmcloud kp instance policy-update dual-auth-delete
    -i, --instance-id INSTANCE_ID
    -d, --disable OR
    -e, --enable

예제

다음은 kp instance policy-update dual-auth-delete의 예제입니다.

예제 1

이 예제는 이중 권한 삭제 정책을 사용으로 설정합니다.

# enable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --enable

Updating instance policy...
OK

# list the instance policies
$ ibmcloud kp instance policies --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-22T18:45:14Z",
    "lastUpdated": "2020-06-22T18:45:14Z",
    "updatedBy": "user id ...<redacted>...",
    "policy_type": "dualAuthDelete",
    "policy_data": { "enabled": true
    }
  }
]

# disable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --disable

Updating instance policy...
OK

# list the instance policies
$ ibmcloud kp instance policies --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-22T18:45:14Z",
    "lastUpdated": "2020-06-22T18:51:33Z",
    "updatedBy": "user id ...<redacted>...",
    "policy_type": "dualAuthDelete",
    "policy_data": { "enabled": false
    }
  }
]

예제 2

이 예제는 이중 권한 삭제 정책을 사용으로 설정하고 새 키가 인스턴스 정책을 상속하는 방법을 표시하기 위해 새 키를 작성합니다.

인스턴스에 대한 이중 권한 정책을 사용 안함으로 설정해도 기존 키에 대한 정책이 변경되지 않습니다. 인스턴스 정책은 정책이 업데이트된 후 작성된 새 키에 적용됩니다.

# enable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --enable

Updating instance policy...
OK

# create a new key
$ ibmcloud kp key create my-protected-key

Creating key: 'my-protected-key', in instance: 'a192d603-0b8d-452f-aac3-f9e1f95e7411'...
OK
Key ID                                 Key Name
6a8a129b-0cd4-4667-ba57-b355a125a7ca   my-protected-key

# list the policies for the key - dual-auth-delete is
# enabled because the key inherits the instance policy
$ ibmcloud kp key policies 6a8a129b-0cd4-4667-ba57-b355a125a7ca --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-22T19:13:00Z",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
    "lastUpdateDate": "2020-06-22T19:13:00Z",
    "updatedBy": "user id ...<redacted>...",
    "dualAuthDelete": { "enabled": true
    }
  }
]

# attempt to delete the key - this fails
$ ibmcloud kp key delete 6a8a129b-0cd4-4667-ba57-b355a125a7ca

Deleting key: 6a8a129b-0cd4-4667-ba57-b355a125a7ca, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
    correlation_id='8ad33eb2-7bbf-4b7a-a02e-221959920342',
    msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted. Please see "reasons" for more details.',
    reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

# disable the instance dual authorization policy
$ ibmcloud kp instance policy-update dual-auth-delete --disable

Updating instance policy...
OK

# attempt to delete the key - this fails because the key policy
# does not change when the instance policy is updated
$ ibmcloud kp key delete 6a8a129b-0cd4-4667-ba57-b355a125a7ca

Deleting key: 6a8a129b-0cd4-4667-ba57-b355a125a7ca, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
    correlation_id='cbc0d18b-a816-45ab-af6a-b8e18dc3e628',
    msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted. Please see "reasons" for more details.',
    reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
    FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

필수 매개변수

  • -d, --disable

  • -e, --enable

    이중 권한 부여 정책을 사용 또는 사용 안함으로 설정합니다. 하나의 옵션이 필요합니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

kp key alias-create

키에 대한 별칭을 생성하고 출력을 JSON 형식으로 표시합니다. 키 ID 를 승인하는 메소드에서 별명을 참조로 사용할 수 있습니다. 각 별칭은 주어진 인스턴스 내에서만 고유하며 Key Protect 서비스 전체에서 예약되지 않습니다. 각각의 키에는 최대 5개의 별명이 존재할 수 있습니다. 인스턴스당 별명 수에는 제한이 없습니다. 별명의 길이는 2 - 90자(경계값 포함)일 수 있습니다.

별명은 영숫자여야 하며 '-' 또는 '_' 이외의 특수 문자나 공백을 포함할 수 없습니다. 또한 별명은 버전 4 UUID가 될 수 없으며 다음과 같은 Key Protect 예약 이름이 아니어야 합니다. allowed_ip, key, keys, metadata, policy, policies, registration, registrations, ring, rings, rotate, wrap, unwrap, rewrap, version, versions.

ibmcloud kp key alias-create KEY_ID -a KEY_ALIAS
    -i, --instance-id     INSTANCE_ID
    -a, --alias           KEY_ALIAS
    [-o, --output         OUTPUT]

예제

kp key alias-create의 예입니다.

키 별명을 작성합니다.

# create a key alias
$ ibmcloud kp key alias-create 24203f96-b134-440e-981a-a24f2d432256 my-alias

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Alias
24203f96-b134-440e-981a-a24f2d432256   my-alias

필수 매개변수

  • KEY_ID

    수정할 키의 ID입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

  • KEY_ALIAS

    수정하려는 키의 별명 또는 대체 식별자입니다. 식별자는 영숫자이고 '-' 또는 '_' 이외의 특수 문자나 공백이 없어야 하며 버전 4 UUID가 될 수 없습니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

kp key cancel-delete

dual-auth-delete 정책을 사용하는 키의 경우 키를 삭제하려면 두 관리자의 권한이 필요합니다.

이 명령(kp key cancel-delete)은 이전 권한을 취소하거나 제거합니다.

kp key schedule-delete 명령은 키를 삭제하기 위한 "권한"입니다.

dual-auth-delete 정책을 사용하는 키를 삭제하려면 다음 프로세스를 따르십시오.

  1. 키를 작성하고 dual-auth-delete 정책을 사용으로 설정합니다.

  2. 사용자 1은 다음을 사용하여 키 삭제를 스케줄 (권한 부여) 합니다. kp key schedule-delete 명령

  3. 사용자 2가 키 삭제 스케줄(권한 부여)합니다.

  4. 사용자 인터페이스, API 및 CLI에서 지원되는 두 번째 schedule-delete가 수행된 후 키가 삭제됩니다.

  5. 두 번째 권한 부여가 7일 이내에 발생하지 않으면 키가 기본 상태로 돌아갑니다.

dual-auth-delete 정책을 사용으로 설정하는 두 가지 방법이 있습니다.

  • kp key policy-update dual-auth-delete를 사용하여 단일 키에 대한 정책 설정
  • 다음을 사용하여 인스턴스에 대한 정책을 설정하십시오. kp instance policy-update dual-auth-delete; 인스턴스 정책이 사용으로 설정된 후에 작성된 모든 키는 인스턴스 정책 설정을 상속합니다.
ibmcloud kp key cancel-delete KEY_ID_OR_ALIAS
    -i, --instance-id INSTANCE_ID

다음은 이전에 스케줄된 키 삭제를 취소하는 예제입니다.

# this key has a dual-auth-delete policy
$ ibmcloud kp key policies $KEY_ID --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-22T19:13:00Z",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
    "lastUpdateDate": "2020-06-22T21:29:10Z",
    "updatedBy": "user id ...<redacted>...",
    "dualAuthDelete": { "enabled": true
    }
  }
]

# cancel a previously scheduled key delete
$ ibmcloud kp key cancel-delete $KEY_ID

Cancelling key for deletion...
OK

필수 매개변수

  • KEY_ID_OR_ALIAS

    삭제하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

kp key create

지정하는 Key Protect 인스턴스에서 루트 키를 작성하거나 고유한 키를 가져옵니다.

루트 키는 16, 24 또는 32바이트(128, 192 또는 256비트에 해당) 길이여야 합니다.

ibmcloud kp key create KEY_NAME
        -i, --instance-id     INSTANCE_ID
    [--key-ring                KEY_RING_ID]
    [-k, --key-material    KEY_MATERIAL]
    [-n, --encrypted-nonce NONCE]
    [-o, --output          OUTPUT]
    [-s, --standard-key]
    [-v, --iv              IV]
    [-D, --description     DESCRIPTION]

예제

다음은 kp key create의 예제입니다.

예제 1

루트 키를 작성하십시오.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
24203f96-b134-440e-981a-a24f2d432256   my-root-key

예제 2

루트 키를 작성하고 JSON 출력을 표시합니다.

# create a root key
$ ibmcloud kp key create my-root-key --output json

{
    "id": "24203f96-b134-440e-981a-a24f2d432256",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:24203f96-b134-440e-981a-a24f2d432256"
}

예제 3

base64로 인코딩된 값에서 루트 키를 작성합니다.

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

# create a root key from a base64-encoded value
$ ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL

Creating key: 'my-base64-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
5f9eef2d-53b4-42e8-8b56-c2970255210a   my-base64-root-key

예제 4

가져오기 토큰을 사용하여 루트 키를 작성합니다.

# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')

# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')

# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY

Encrypted Key
qT1pyiS1Sivbmmt4doTtfZC4XuLazk7u ...<redacted>... +a/6EqeAamo/9vo=

# capture the encrypted key material
$ ENCRYPTED_KEY=qT1pyiS1Sivbmmt4doTtfZC4XuLazk7u ...<redacted>... +a/6EqeAamo/9vo=

# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE

Encrypted Nonce                            IV
fR8uRvbrKIm9y/LCq9p6pwFBXbF864q/bw5meQ==   efQgA8xBeyuBy39D

# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=fR8uRvbrKIm9y/LCq9p6pwFBXbF864q/bw5meQ==
$ IV=efQgA8xBeyuBy39D

# create a root key using an import token, provide an encrypted key, nonce, and initialization vector (IV)
$ ibmcloud kp key create my-imported-root-key -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV

Creating key: 'my-imported-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
4241a9b3-0ee0-4cfd-b0f3-fd80505fb675   my-imported-root-key

예제 5

표준 키를 작성합니다.

# create a standard key
$ ibmcloud kp key create my-standard-key -s

Creating key: 'my-standard-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
12d3f3a4-aea5-4832-8339-fa14dbffd935   my-standard-key

예제 6

인증 정보에 대한 볼트로 사용되는 표준 키를 작성합니다.

base64로 인코딩된 모든 문자열을 표준 키로 가져올 수 있습니다. 이 예제는 암호화 키뿐만 아니라 신임 정보를 다음에 저장하는 방법을 보여줍니다. Key Protect.

base64 인코딩 이전의 표준 키는 크기가 최대 7,500바이트일 수 있습니다.

# create a file with your credentials
$ cat credentials.json

{
    "host": "localhost",
    "database": "dev-backup",
    "username": "my-username",
    "password": "my-password"
}

# encode the credentials (or any string) to a base64 string
$ ENCODED=$(base64 -i credentials.json)

$ echo $ENCODED

ewoJImhvc3QiOiAibG9jYWxob3N0IiwK...<redacted>...cGFzc3dvcmQiCn0K

# create a new key that contains the base64-encoded credentials
$ ibmcloud kp key create credentials-key -i $KP_INSTANCE_ID --key-material $ENCODED --standard-key --output json

# OR... CAPTURE THE KEY_ID
$ KEY_ID=$(ibmcloud kp key create credentials-key -i $KP_INSTANCE_ID --key-material $ENCODED --standard-key --output json | jq -r '.["id"]')

{
    "id": "8480e26f-3add-4fff-bca7-8cf908894b7c",
    "name": "credentials-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": true,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:8480e26f-3add-4fff-bca7-8cf908894b7c",
    "deleted": false
}

# retrieve the base64-encoded payload
$ ibmcloud kp key show $KEY_ID --output json

# OR... CAPTURE THE PAYLOAD
$ PAYLOAD=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["payload"]')

{
    "id": "8480e26f-3add-4fff-bca7-8cf908894b7c",
    "name": "credentials-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-08-18T16:13:08Z",
    "lastUpdateDate": "2020-08-18T16:13:08Z",
    "extractable": true,
    "payload": "ewoJImhvc3QiOiAibG9jYWxob3N0IiwKCSJkYXRhYmFzZSI6ICJkZXYtYmFja3VwIiwKCSJ1c2VybmFtZSI6ICJteS11c2VybmFtZSIsCgkicGFzc3dvcmQiOiAibXktcGFzc3dvcmQiCn0=",
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:8480e26f-3add-4fff-bca7-8cf908894b7c",
    "deleted": false,
    "dualAuthDelete": {
        "enabled": false
      }
}

# decode the payload to get the original string (credentials)
$ echo $PAYLOAD | base64 -d

{
    "host": "localhost",
    "database": "dev-backup",
    "username": "my-username",
    "password": "my-password"
}

실시예 7

별명을 사용하여 루트 키를 작성한 후 해당 별명을 사용하여 키를 식별하고 키 세부사항을 표시하십시오.

# create a root key with an alias
$ ibmcloud kp key create root-key-with-alias -a example-alias --output json

{
    "id": "b3660416-4186-4587-b528-484886a4731b",
    "name": "root-key-with-alias",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "aliases": [
        "example-alias"
    ],
    "keyRingID": "default",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:b3660416-4186-4587-b528-484886a4731b",
    "deleted": false
}

# show key details using the alias as identifier
$ ibmcloud kp key show example-alias --output json

{
    "id": "b3660416-4186-4587-b528-484886a4731b",
    "name": "root-key-with-alias",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2022-06-09T21:21:55Z",
    "lastUpdateDate": "2022-06-09T21:21:55Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2022-06-09T21:21:55Z"
    },
    "aliases": [
        "example-alias"
    ],
    "keyRingID": "default",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:b3660416-4186-4587-b528-484886a4731b",
    "deleted": false,
    "dualAuthDelete": {
        "enabled": false
    }
}

실시예 8

키에 설명을 추가하십시오. 예를 들어, 키의 의도된 목적을 설명하는 데 사용되는 짧은 구문입니다.

ibmcloud kp key create KEY_NAME -i 40f2a13c-780e-4641-bea5-e166e5bb5a9f -D ""description of the key""

필수 매개변수

  • KEY_NAME

    키에 지정할 사용자가 읽을 수 있는 고유 식별자입니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -k, --key-material

    키를 생성한 경우 서비스에 저장하고 관리하는 base64로 인코딩된 키 자료입니다.

    루트 키는 16, 24 또는 32바이트(128, 192 또는 256비트에 해당) 길이여야 합니다. 키는 base64로 인코딩되어야 합니다.

    표준 키의 크기는 최대 7,500바이트일 수 있습니다. 키는 base64로 인코딩되어야 합니다.

    가져오기 토큰을 사용하여 키를 작성하는 경우 kp import-token key-encrypt 프로세스에서 암호화된 키입니다.

    새 키를 생성하려면 -k, --key-material 매개변수를 생략하십시오.

  • -n, --encrypted-nonce

    가져오기 토큰과 함께 사용됩니다. 키를 Key Protect로 가져오기 위한 요청을 확인하는 암호화된 난스(nonce) 값입니다. 이 값은 서비스로 가져온 키 자료를 사용하여 암호화되어야 합니다. ibmcloud kp import-token --help을 참조하십시오.

    난스 값을 검색하려면 ibmcloud kp import-token show을(를) 사용하십시오. 그런 다음 ibmcloud kp import-token nonce-encrypt를 실행하여 값을 암호화하십시오.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • -s, --standard-key

    표준 키를 작성할 경우에만 매개변수를 설정하십시오. 루트 키를 작성하려면 --standard-key 매개변수를 생략하십시오.

  • -v, --iv

    가져오기 토큰과 함께 사용됩니다. 난스(nonce)를 암호화할 때 생성되는 초기화 벡터(IV) 입니다. IV 값은 서비스에 키 가져오기 요청을 작성할 때 제공하는 암호화된 난스(nonce) 값을 복호화하는 데 필요합니다.

    IV를 생성하려면 ibmcloud kp import-token nonce-encrypt를 실행하여 난스(nonce)를 암호화하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

  • -D, --description

    설명을 키에 추가할 수 있습니다. 예를 들어, 키의 의도된 목적을 설명하는 데 사용되는 짧은 구문입니다.

kp키 create-key-with-policy-overrides

적용 가능한 인스턴스 정책을 대체할 이름 지정된 키에 대해서만 정책이 있는 키를 작성하십시오.

ibmcloud kp key create-key-with-policy-overrides KEY_NAME
    -i, --instance-id                         INSTANCE_ID
    [-a, --aliases                            ALIAS]
    [-d, --dual-auth-delete-policy-enabled    KEY_RING_ID]
    [--key-ring                               KEY_RING_ID]
    [-k, --key-material                       KEY_MATERIAL]
    [-m, --rotation-interval-month            VALUE]
    [-n, --encrypted-nonce                    NONCE]
    [-o, --output                             OUTPUT]
    [-s, --standard-key]
    [-v, --iv                                 IV]

2개월의 간격으로 순환 정책을 사용하는 루트 키를 작성하십시오 (각 "월" 의 값은 30일로 지정되어 60일순환 간격이 됨).

% ibmcloud kp key create-key-with-policy-overrides test-key -m 2 -r
Creating key with policy overrides: 'test-key', in instance: '47377f07-8721-2O47-f396-ef1982c1e96e'...

OK
Key ID                                 Key Name   
076df396-4c90-e008-bf20-f1bb672d465b   test-key

# List policies
% ibmcloud kp key policies 076df396-4c90-e008-bf20-f1bb672d465b
Retrieving policy details for key ID: 076df396-4c90-e008-bf20-f1bb672d465b...
OK

Created By      IBMid-xxxxnnnnnxxx   
Creation Date   2022-10-27T17:48:20Z   
Last Updated    2022-10-27T17:48:20Z   
Updated By      IBMid-xxxxnnnnnxxx   
Policy Type     Rotation   
Interval        2   
Enabled         true

필수 매개변수

  • KEY_NAME

    키에 지정할 사용자가 읽을 수 있는 고유 식별자입니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -a, --aliases

    키에 지정된 2-90자범위의 영숫자로 읽을 수 있는 별명 이름입니다. 별명에는 공백이나 밑줄 및 대시 이외의 특수 문자를 사용할 수 없습니다. 키당 최대 5개의 별명이 허용됩니다.

  • -d, --dual-auth-delete-policy-enabled

키에 대한 이중 인증 삭제 정책을 사용합니다.

  • -k, --key-material

    키를 생성한 경우 서비스에 저장하고 관리하는 base64로 인코딩된 키 자료입니다.

    루트 키는 16, 24 또는 32바이트(128, 192 또는 256비트에 해당) 길이여야 합니다. 키는 base64로 인코딩되어야 합니다.

    표준 키의 크기는 최대 7,500바이트일 수 있습니다. 키는 base64로 인코딩되어야 합니다.

    가져오기 토큰을 사용하여 키를 작성하는 경우 kp import-token key-encrypt 프로세스에서 암호화된 키입니다.

    새 키를 생성하려면 -k, --key-material 매개변수를 생략하십시오.

  • -n, --encrypted-nonce

    가져오기 토큰과 함께 사용됩니다. 키를 Key Protect로 가져오기 위한 요청을 확인하는 암호화된 난스(nonce) 값입니다. 이 값은 서비스로 가져온 키 자료를 사용하여 암호화되어야 합니다. ibmcloud kp import-token --help을 참조하십시오.

    난스 값을 검색하려면 ibmcloud kp import-token show을(를) 사용하십시오. 그런 다음 ibmcloud kp import-token nonce-encrypt를 실행하여 값을 암호화하십시오.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • -m, --rotation-interval-month

키에 대한 순환 시간 간격(분 단위)을 지정합니다. 기본값은 -1입니다.

  • -s, --standard-key

    표준 키를 작성할 경우에만 매개변수를 설정하십시오. 루트 키를 작성하려면 --standard-key 매개변수를 생략하십시오.

  • -v, --iv

    가져오기 토큰과 함께 사용됩니다. 난스(nonce)를 암호화할 때 생성되는 초기화 벡터(IV) 입니다. IV 값은 서비스에 키 가져오기 요청을 작성할 때 제공하는 암호화된 난스(nonce) 값을 복호화하는 데 필요합니다.

    IV를 생성하려면 ibmcloud kp import-token nonce-encrypt를 실행하여 난스(nonce)를 암호화하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key delete

Key Protect 서비스에 저장되는 키를 삭제합니다.

ibmcloud kp key delete KEY_ID_OR_ALIAS
        -i, --instance-id INSTANCE_ID
    [--key-ring          KEY_RING_ID]
    [-f, --force]
    [-o, --output      OUTPUT]

예제

다음은 kp key delete의 예제입니다.

예제 1

루트 키를 삭제합니다.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
8635b804-9966-4918-a16b-d561fdbf181f   my-root-key

# show key details
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f

Grabbing info for key id: 8635b804-9966-4918-a16b-d561fdbf181f...
OK
Key ID                                 Key Name      Description   Creation Date                   Expiration Date
8635b804-9966-4918-a16b-d561fdbf181f   my-root-key                 2020-05-05 19:58:02 +0000 UTC   Key does not expire

# delete the key
$ ibmcloud kp key delete 8635b804-9966-4918-a16b-d561fdbf181f

Deleting key: 8635b804-9966-4918-a16b-d561fdbf181f, from instance: 390086ac-76fa-4094-8cf3-c0829bd69526...
OK
Deleted Key
8635b804-9966-4918-a16b-d561fdbf181f

예제 2

루트 키를 삭제하고 JSON 출력을 표시합니다.

# create a root key
$ ibmcloud kp key create my-root-key --output json

{
    "id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb145:390086ac-76fa-4094-8cf3-c0829bd69526:key:9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}

# show key details
$ ibmcloud kp key show 9cca88c9-019e-4f0a-9e76-8e657c6b9720 --output json

{
    "id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-05-05T20:03:00Z",
    "lastUpdateDate": "2020-05-05T20:03:00Z",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb145:390086ac-76fa-4094-8cf3-c0829bd69526:key:9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}

# delete the key
$ ibmcloud kp key delete 9cca88c9-019e-4f0a-9e76-8e657c6b9720 --output json

{
    "id": "9cca88c9-019e-4f0a-9e76-8e657c6b9720"
}

예제 3

다른 클라우드 리소스에 등록된 루트 키를 삭제합니다.

# create a Cloud Object Storage (COS) instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1

$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global

# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=9d4353d8-6b85-4689-90dd-1ccfb4a275ab

# create a Key Management Service (KMS) instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1

$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south

# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=b0d84b32-09d0-4314-8049-da78e3b9ab6f

# create a policy for COS to read KMS; source is COS, target is KMS (Key Protect)
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
  --source-service-instance-id $COS_INSTANCE_ID \
  --target-service-instance-id $KP_INSTANCE_ID

# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=79375168-2d74-49df-98aa-3e727410fa71

# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json

{
    "id": "52a9d772-8982-4620-bfb4-b070dd812a0c",
    "name": "my-cos-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b0d84b32-09d0-4314-8049-da78e3b9ab6f:key:52a9d772-8982-4620-bfb4-b070dd812a0c"
}

# capture the KP root key id
$ MY_COS_KEY_ID=52a9d772-8982-4620-bfb4-b070dd812a0c

# create a COS bucket and set KP encryption
#   must be done in the console user interface (UI) because
#   there is no API or CLI support at this time

# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket

# view the KP registration; it's a result of creating the COS bucket
$ ibmcloud kp registrations --output json

[
  {
    "keyId": "52a9d772-8982-4620-bfb4-b070dd812a0c",
    "resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:9d4353d8-6b85-4689-90dd-1ccfb4a275ab:bucket:my-cos-kms-bucket",
    "createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:9d4353d8-6b85-4689-90dd-1ccfb4a275ab::",
    "creationDate": "2020-06-15T20:41:23Z",
    "lastUpdated": "2020-06-15T20:41:23Z",
    "keyVersion": { "id": "52a9d772-8982-4620-bfb4-b070dd812a0c", "creationDate": "2020-06-15T20:36:46Z"
    }
  }
]

# delete the authorization policy between COS AND KMS - this breaks everything
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force

# delete the KP root key - this fails because the registration was not deleted
$ ibmcloud kp key delete $MY_COS_KEY_ID

Deleting key: 52a9d772-8982-4620-bfb4-b070dd812a0c, from instance: b0d84b32-09d0-4314-8049-da78e3b9ab6f...
FAILED
kp.Error:
    correlation_id='c27b7948-4a1f-4cbd-8770-cb3616888e27',
    msg='Conflict: Key could not be deleted. Please see "reasons" for more details.',
    reasons='[PROTECTED_RESOURCE_ERR: Key is protecting one or more cloud resources -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/docs/key-protect?topic=key-protect-troubleshooting#unable-to-delete-keys]'

# delete the KP root key; use --force because the registration between COS and KMS still exists
$ ibmcloud kp key delete $MY_COS_KEY_ID --force --output json

{
    "id": "52a9d772-8982-4620-bfb4-b070dd812a0c"
}

# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force

# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force

# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances

Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.

필수 매개변수

  • KEY_ID_OR_ALIAS

    삭제하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -f, --force

    키를 강제로 삭제합니다. 이는 "등록"이 있는 키를 삭제하는 데 사용됩니다. 등록은 루트 키와 기타 클라우드 리소스(예: COS(Cloud Object Storage) 버킷 또는 클라우드 데이터베이스 배치) 간의 연관입니다.

    자세한 정보는 kp registrations를 참조하십시오.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key disable

kp key disable 명령은 루트 키를 사용 안함으로 설정하고 클라우드에서 키와 연관된 데이터에 대한 액세스 권한을 일시적으로 취소합니다.

데이터에 대해 가능한 보안 노출, 손상 또는 위반을 의심하는 경우 관리자로서 일시적으로 루트 키를 사용 안함으로 설정해야 할 수 있습니다.

루트 키를 사용 안함으로 설정하면 암호화 및 복호화 오퍼레이션이 일시중단됩니다. 보안 위험이 더 이상 활성 상태가 아닌지 확인한 후 사용 안함으로 설정된 루트 키를 사용으로 설정하여 데이터에 대한 액세스를 복원할 수 있습니다.

이전에 사용으로 설정된 루트 키를 사용 안함으로 설정하면 활성(값 1)에서 일시중단됨(값 2) 키 상태로 전환됩니다.

루트 키를 사용 안함으로 설정하려면 인스턴스 또는 키에 대한 관리자 서비스 액세스 역할이 지정되어 있어야 합니다. IAM 역할을 Key Protect 서비스 조치에 맵핑하는 방법을 알아보려면, 서비스 액세스 역할을 확인하십시오.

사용 안함으로 설정된 루트 키에 대한 액세스 권한 취소를 지원하는 통합 클라우드 서비스를 사용 중인 경우 루트 키와 연관된 데이터에 대한 액세스 권한이 취소될 때까지 서비스에서 최대 4시간이 걸릴 수 있습니다.

연관된 데이터에 대한 액세스가 취소되면, 해당하는 disable event 가 IBM Cloud Logs 웹 UI에 표시됩니다. disable event는 키가 취소되어 이제 사용 안함으로 설정되었으며 키가 암호화 및 암호 해독 오퍼레이션에 사용되지 않음을 표시합니다.

ibmcloud kp key disable KEY_ID_OR_ALIAS
    -i, --instance-id INSTANCE_ID
    [--key-ring         KEY_RING_ID]

예제

다음은 kp key disable의 예제입니다.

예제 1

루트 키를 작성하여 사용 안함으로 설정하고 키 상태(일시중단됨)를 확인한 후 루트 키를 사용으로 설정하고 키 상태(활성)를 확인합니다.

# create a root key
$ ibmcloud kp key create my-root-key --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-09T21:21:55Z",
    "lastUpdateDate": "2020-06-09T21:21:55Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2020-06-09T21:21:55Z"
    },
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

# disable the root key
$ ibmcloud kp key disable 264fadc3-7667-4b25-916e-5825fe70de0b

Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK

# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-09T21:21:55Z",
    "lastUpdateDate": "2020-06-09T21:23:26Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2020-06-09T21:21:55Z"
    },
    "extractable": false,
    "state": 2,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

예제 2

루트 키를 작성하여 사용 안함으로 설정하고 루트 키를 사용하여 다른 키를 랩핑하려고 시도합니다.

# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')

$ echo $KEY_ID

63d044d9-b38b-4803-85ef-ed9a1e5087c2

# disable the root key
$ ibmcloud kp key disable $KEY_ID

Disabling key: '63d044d9-b38b-4803-85ef-ed9a1e5087c2', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK

# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)

$ echo $PLAINTEXT

BNxtU9B4kXOZA45Cnyz3wOh4J77TakTXI1n2rj0ZiMc=

# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
# this should fail (the root key is disables)
$ ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json

FAILED
kp.Error:
    correlation_id='c2edbdad-7e62-4690-8fcc-10515ade9913',
    msg='Conflict: Action could not be performed on key. Please see "reasons" for more details.',
    reasons='[KEY_ACTION_INVALID_STATE_ERR: Key is not in a valid state -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

예제 3

별명을 사용하여 루트 키를 작성하고 해당 별명을 사용하여 사용 안함으로 설정할 키를 식별하고 키 상태 (일시중단됨) 를 확인한 후 루트 키를 사용으로 설정하고 새 키 상태 (활성) 를 확인하십시오.

# create a root key
$ ibmcloud kp key create root-key-with-alias -a example-alias-1 --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "root-key-with-alias",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "aliases": [
        "example-alias"
    ],
    "deleted": false,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

# show key details using the alias as identifier - a state of "1" is "active"
$ ibmcloud kp key show example-alias-1 --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "root-key-with-alias",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-09T21:21:55Z",
    "lastUpdateDate": "2020-06-09T21:21:55Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2020-06-09T21:21:55Z"
    },
    "extractable": false,
    "state": 1,
    ...
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

# disable the root key identified by alias
$ ibmcloud kp key disable example-alias-1

Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK

# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show example-alias-1 --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "root-key-with-alias",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-09T21:21:55Z",
    "lastUpdateDate": "2020-06-09T21:23:26Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2020-06-09T21:21:55Z"
    },
    "extractable": false,
    "state": 2,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

필수 매개변수

  • KEY_ID_OR_ALIAS

    삭제하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key enable

이전에 사용 안함으로 설정된 루트 키를 사용으로 설정하면 활성(값 1)에서 일시중단됨(값 2) 키 상태로 전환됩니다. 이 조치로 키의 암호화 및 복호화 오퍼레이션이 복원됩니다.

사용 안함으로 설정된 루트 키에 대한 액세스 복원을 지원하는 통합 클라우드 서비스를 사용 중인 경우 루트 키의 연관된 데이터에 대한 액세스를 복원하기까지 서비스가 최대 4시간이 걸릴 수 있습니다.

연관된 데이터에 대한 액세스가 복원되고 나면, 해당하는 enable event 가 IBM Cloud Logs 웹 UI에 표시됩니다. enable event는 키가 복원되어 이제 사용으로 설정되었으며 키는 랩핑, 랩핑 해제 및 다시 랩핑과 같은 암호화 및 복호화 오퍼레이션에 사용할 수 있음을 나타냅니다.

ibmcloud kp key enable <KEY_ID_OR_ALIAS> -i <INSTANCE_ID> [ --key-ring KEY_RING_ID]

예제

kp key enable의 예입니다.

# create a root key
$ ibmcloud kp key create my-root-key --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-09T21:21:55Z",
    "lastUpdateDate": "2020-06-09T21:21:55Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2020-06-09T21:21:55Z"
    },
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

# disable the root key
$ ibmcloud kp key disable 264fadc3-7667-4b25-916e-5825fe70de0b

Disabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK

# show key details - a state of "2" is "suspended"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-09T21:21:55Z",
    "lastUpdateDate": "2020-06-09T21:23:26Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2020-06-09T21:21:55Z"
    },
    "extractable": false,
    "state": 2,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

# enable the key
$ ibmcloud kp key enable 264fadc3-7667-4b25-916e-5825fe70de0b

Enabling key: '264fadc3-7667-4b25-916e-5825fe70de0b', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK

# show key details - a state of "1" is "active"
$ ibmcloud kp key show 264fadc3-7667-4b25-916e-5825fe70de0b --output json

{
    "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-09T21:21:55Z",
    "lastUpdateDate": "2020-06-09T21:31:44Z",
    "keyVersion": {
        "id": "264fadc3-7667-4b25-916e-5825fe70de0b",
    "creationDate": "2020-06-09T21:21:55Z"
    },
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:264fadc3-7667-4b25-916e-5825fe70de0b"
}

필수 매개변수

  • KEY_ID_OR_ALIAS

    삭제하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key policies

키의 자동 순환 간격과 같은 키 정책에 대한 세부사항을 검색합니다.

ibmcloud kp key policies KEY_ID_OR_ALIAS
        -i, --instance-id INSTANCE_ID
    [--key-ring          KEY_RING_ID]
    [-d, --dual-auth]
    [-o, --output      OUTPUT]
    [-r, --rotation]

이 예제는 루트 키에 대한 정책을 나열합니다.

주요 정책은 이중 권한 삭제순환입니다.

# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')

$ echo $KEY_ID

c024c2b3-2093-46e5-aabb-fdf8cbc14e44

# show key details
$ ibmcloud kp key show $KEY_ID --output json

{
    "id": "c024c2b3-2093-46e5-aabb-fdf8cbc14e44",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-18T20:34:39Z",
    "lastUpdateDate": "2020-06-18T20:34:39Z",
    "keyVersion": {
        "id": "c024c2b3-2093-46e5-aabb-fdf8cbc14e44",
    "creationDate": "2020-06-18T20:34:39Z"
    },
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:c024c2b3-2093-46e5-aabb-fdf8cbc14e44"
}

# update the policy and rotate the key every 2 months
$ ibmcloud kp key policy-update rotation $KEY_ID -m 2 --output json

{
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-18T20:35:41Z",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:06a40fd6-6fd7-460a-87d7-8388fc1be057",
    "lastUpdateDate": "2020-06-18T20:35:41Z",
    "updatedBy": "user id ...<redacted>...",
    "rotation": {
        "interval_month": 2
      }
}

# list the policies
$ ibmcloud kp key policies $KEY_ID --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-18T20:35:41Z",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:06a40fd6-6fd7-460a-87d7-8388fc1be057",
    "lastUpdateDate": "2020-06-18T20:35:41Z",
    "updatedBy": "user id ...<redacted>...",
    "rotation": { "interval_month": 2
    }
  }
]

필수 매개변수

  • KEY_ID_OR_ALIAS

    쿼리하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -d, --dual-auth

    dual-auth-delete 정책이 있는 정책을 표시합니다.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • -r, --rotation

    rotation 정책이 있는 정책을 표시합니다.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key policy-update dual-auth-delete

Key Protect를 사용하여 이중 권한 부여 프로세스를 통해 암호화 키를 안전하게 삭제할 수 있습니다. 키를 삭제하면 해당 컨텐츠 및 연관된 데이터가 파쇄됩니다. 키로 암호화된 모든 데이터는 액세스할 수 없습니다.

이중 권한 부여 정책을 가진 키를 삭제하려면 두 사용자의 권한 부여가 필요합니다. 다음 Key Protect API를 사용하면, 삭제 키를 설정하여 첫 번째 권한을 부여할 수 있습니다. 그런 다음 다른 사용자가 다음을 사용하여 두 번째 인증을 제공합니다 GUI 또는 API 를 사용하여 키를 삭제합니다.

ibmcloud kp key policy-update dual-auth-delete KEY_ID_OR_ALIAS
        -i, --instance-id INSTANCE_ID
        -e, --enable
    [--key-ring          KEY_RING_ID]
    [-o, --output      OUTPUT]

이 예제는 이중 권한 삭제 정책을 사용으로 설정합니다.

# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')

$ echo $KEY_ID

d887bfe8-5166-4dad-af32-7e3055ca1873

# show key details
$ ibmcloud kp key show $KEY_ID --output json

{
    "id": "d887bfe8-5166-4dad-af32-7e3055ca1873",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-19T16:07:50Z",
    "lastUpdateDate": "2020-06-19T16:07:50Z",
    "keyVersion": {
        "id": "d887bfe8-5166-4dad-af32-7e3055ca1873",
    "creationDate": "2020-06-19T16:07:50Z"
    },
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:d887bfe8-5166-4dad-af32-7e3055ca1873"
}

# enable the dual authorization policy
$ ibmcloud kp key policy-update dual-auth-delete $KEY_ID --enable --output json

{
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-19T16:08:59Z",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:0aab763d-b650-43a2-86ad-bdfe2c35c94c",
    "lastUpdateDate": "2020-06-19T16:08:59Z",
    "updatedBy": "user id ...<redacted>...",
    "dualAuthDelete": {
        "enabled": true
      }
}

# list the policies
$ ibmcloud kp key policies $KEY_ID --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-19T16:08:59Z",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:0aab763d-b650-43a2-86ad-bdfe2c35c94c",
    "lastUpdateDate": "2020-06-19T16:08:59Z",
    "updatedBy": "user id ...<redacted>...",
    "dualAuthDelete": { "enabled": true
    }
  }
]

# this should fail (the key has a dual authorization policy)
$ ibmcloud kp key delete $KEY_ID_OR_ALIAS

Deleting key: d887bfe8-5166-4dad-af32-7e3055ca1873, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
FAILED
kp.Error:
    correlation_id='fe0db627-1726-4827-a9d2-c21d728e1c92',
    msg='Conflict: 1 prior authorization(s) are required for deletion: Key could not be deleted.
        Please see "reasons" for more details.',
    reasons='[AUTHORIZATIONS_NOT_MET: Number of authorizations required to delete is not met -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/apidocs/key-protect]'

필수 매개변수

  • KEY_ID_OR_ALIAS

    쿼리하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

  • -e, --enable

    dual-auth-delete 정책을 사용으로 설정하고 나면 사용 안함으로 설정할 수 없습니다. 두 개의(이중) 권한이 없으면 키를 삭제할 수 없습니다. 이 프로세스는 7일 이내에 완료되어야 합니다. 그러지 않으면 이중 권한 정책이 자동으로 취소됩니다. 즉, 권한이 있는 모든 사용자가 키를 삭제할 수 있습니다(두 개의 권한이 필요하지 않음).

    실수로 이중 권한 부여 정책을 사용으로 설정했으며 키를 삭제하려는 경우 disable 명령을 사용하여 키를 kp key disable하고 이중 권한 부여 정책이 만료될 때까지 7일을 대기할 수 있습니다. 이때 키를 삭제할 수 있습니다.

    활성 키가 있는 한 Key Protect 인스턴스를 삭제할 수 없습니다. 이중 권한 부여 정책을 사용하는 키는 활성 키입니다.

선택적 매개변수

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key policy-update rotation

루트 키에 대한 자동 순환 정책을 설정하는 경우 정기적으로 키의 수명을 줄이고 이 키로 보호되는 정보의 양을 제한합니다. 사용자는 키에 대한 키 순환 정책을 사용 또는 사용 안함으로 설정할 수도 있습니다.

다음에 생성되는 루트 키에 대한 순환 정책만 작성할 수 있습니다. Key Protect. 초기에 루트 키를 가져온 경우 키를 순환하려면 base64로 인코딩된 새 키 자료를 제공해야 합니다. 자세한 정보는 요청 시 루트 키 순환을 참조하십시오.

ibmcloud kp key policy-update rotation KEY_ID|KEY_ALIAS
[--enable | --disable] [-m MONTHLY_INTERVAL] [-o FORMAT]
[--key-ring KEY_RING_ID]

예제

순환 정책은 키 작성 시 또는 키가 작성된 후에 적용될 수 있습니다. 첫 번째 예제에서는 단순히 순환 정책 없이 키를 작성합니다.

# create a root key

ibmcloud kp key create rotateKeyEnableDisableDemo

Creating key: 'rotateKeyEnableDisableDemo', in instance: '5ecfe306-d4at-48c0-ab07-b5c5bc751534'...
OK
Key ID                                 Key Name   
4d5540bd-3235-4a46-a8af-974f7ed6558a   rotateKeyEnableDisableDemo   
---------------------------------------------------------------------------------------------------------------------------------------------------
# set a rotation policy of three months

ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -m 3 -e --output json

{
        "createdBy": "user id ...<redacted>...",
        "creationDate": "2022-12-02T00:50:11Z",
        "crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
        "lastUpdateDate": "2022-12-02T00:51:38Z",
        "updatedBy": "user id ...<redacted>...",
        "rotation": {
                "enabled": true,
                "interval_month": 3
        }
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# show the rotation policy for this key

ibmcloud kp key policies 4d5540bd-3235-4a46-a8af-974f7ed6558a -r --output json

{
        "createdBy": "user id ...<redacted>...",
        "creationDate": "2022-12-02T00:50:11Z",
        "crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
        "lastUpdateDate": "2022-12-02T00:51:38Z",
        "updatedBy": "user id ...<redacted>...",
        "rotation": {
                "enabled": true,
                "interval_month": 2
        }
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# update the policy to three months

ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -m 3 -e --output json

{
        "createdBy": "user id ...<redacted>...",
        "creationDate": "2022-12-02T00:50:11Z",
        "crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
        "lastUpdateDate": "2022-12-02T00:51:38Z",
        "updatedBy": "user id ...<redacted>...",
        "rotation": {
                "enabled": true,
                "interval_month": 3
        }
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# disable the policy for this key

ibmcloud kp key policy-update rotation 4d5540bd-3235-4a46-a8af-974f7ed6558a -d --output json

{
        "createdBy": "user id ...<redacted>...",
        "creationDate": "2022-12-02T00:50:11Z",
        "crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
        "lastUpdateDate": "2022-12-02T00:52:52Z",
        "updatedBy": "user id ...<redacted>...",
        "rotation": {
                "enabled": false,
                "interval_month": 3
        }
}
---------------------------------------------------------------------------------------------------------------------------------------------------
# show that the policy has been disabled

ibmcloud kp key policies 4d5540bd-3235-4a46-a8af-974f7ed6558a -r --output json

{
        "createdBy": "user id ...<redacted>...",
        "creationDate": "2022-12-02T00:50:11Z",
        "crn": "crn:v1:bluemix:public:kms:us-south:a/e3e8fd14a61a49cda102faad15b06c09:5ecfe306-d4af-48c0-ab07-b5c5bc751534:policy:0ec7ad62-982d-45bb-895f-986d95015f5b",
        "lastUpdateDate": "2022-12-02T00:52:52Z",
        "updatedBy": "user id ...<redacted>...",
        "rotation": {
                "enabled": false,
                "interval_month": 3
        }
}
---------------------------------------------------------------------------------------------------------------------------------------------------

필수 매개변수

  • KEY_ID_OR_ALIAS

    쿼리하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

선택적 매개변수

  • -m, --monthly-interval

    키 순환 간격(월 단위)을 설정하십시오. 순환 간격은 1 - 12개월이어야 합니다.

  • -e, --enable 또는 -d, --disable

    기본적으로 키 순환 정책은 사용으로 설정되어 있습니다. 사용자가 정책을 비활성화하거나 활성화하려면 -d(--disable) 또는 -e(--enable)를 각각 사용하면 됩니다.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key restore

Key Protect는 이전에 삭제된 루트 키를 복원할 수 있습니다. 그러면 클라우드에서 루트 키와 연관된 데이터에 대한 액세스 권한이 복원됩니다.

관리자는 이전에 키가 보호한 데이터에 액세스하기 위해 Key Protect로 가져온 루트 키를 복원해야 할 수 있습니다.

키를 복원할 때 폐기됨(값 5)에서 활성(값 1) 키 상태로 키를 이동하고, 이전에 키를 사용하여 암호화된 데이터에 대한 액세스를 복원합니다.

삭제한 후 30일 이내에 삭제된 키를 복원할 수 있습니다. 이 기능은 key material로 작성된 루트 키에만 사용할 수 있습니다.

key material 를 사용하여 작성된 루트 키만 복원할 수 있습니다. -k, --key-material 옵션을 사용하는 kp key create. --key-material 옵션이 지정되지 않은 경우 루트 키를 복원할 수 없습니다.

삭제된 루트 키를 복원하려면 반드시 루트 키를 작성하는 데 사용된 key material. 원래 key material을(를) 제공하지 않고 삭제된 키를 복원할 수 없습니다.

ibmcloud kp key restore KEY_ID_OR_ALIAS
        -i, --instance-id     INSTANCE_ID
        -k, --key-material    KEY_MATERIAL
    [--key-ring          KEY_RING_ID]
    [-n, --encrypted-nonce ENCRYPTED_NONCE]
    [-v, --iv              IV]

예제

다음은 kp key restore의 예제입니다.

예제 1

이 예제는 키 자료를 사용하여 루트 키를 작성하고 키를 삭제한 후 키를 복원합니다.

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL

4EZBMBMkZ87z4nvYsQH21DC5+wslgWhHRiU8bmqJ4CY=

# create a root key from a base64-encoded value
$ KEY_ID=$(ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL --output json | jq -r '.["id"]')

$ echo $KEY_ID

62ad0cd5-70a4-4c4d-9d87-5f4db620b120

# delete the root key
$ ibmcloud kp key delete $KEY_ID

Deleting key: 62ad0cd5-70a4-4c4d-9d87-5f4db620b120, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Deleted Key
62ad0cd5-70a4-4c4d-9d87-5f4db620b120

# list keys - verify the key was deleted
$ ibmcloud kp keys

Retrieving keys...
OK
Key ID   Key Name

# restore the deleted key
$ ibmcloud kp key restore $KEY_ID -k $KEY_MATERIAL --output json

{
    "id": "62ad0cd5-70a4-4c4d-9d87-5f4db620b120",
    "name": "my-base64-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:62ad0cd5-70a4-4c4d-9d87-5f4db620b120"
}

# list keys - verify the key was restored
$ ibmcloud kp keys

Retrieving keys...
OK
Key ID                                 Key Name
62ad0cd5-70a4-4c4d-9d87-5f4db620b120   my-base64-root-key

예제 2

이 워크플로우는 가져오기 토큰을 사용하여 루트 키를 작성하고 키를 삭제한 후 키를 복원합니다.

이는 2단계 프로세스입니다.

  1. 가져오기 토큰을 사용하여 루트 키를 작성한 다음 키 삭제

  2. 키를 복원하는 데 필요한 가져오기 토큰 작성 및 키 복원

가져오기 토큰을 사용하여 루트 키를 만드는 데는 시간 제한이 있습니다( -e, --expiration 옵션). 키를 복원할 때 가져오기 토큰이 필요합니다. 따라서 키를 복원하려면 가져오기 토큰 프로세스를 거쳐야 합니다.

1단계 - 가져오기 토큰을 사용하여 루트 키를 작성한 후 키 삭제

# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10

Created                         Expires                         Max Retrievals   Remaining Retrievals
2020-06-18 12:21:59 +0000 UTC   2020-06-18 12:26:59 +0000 UTC   10               10

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

$ echo $KEY_MATERIAL

sADDNDE3pcJlbYXu2z5QFORvsxV1PosRiAPERrhYJdk=

# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')

$ echo $NONCE

/QhqOsqlVPC+ZPWz

# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')

$ echo $PUBLIC_KEY

LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=

# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY

Encrypted Key
C+/puHn1v5p7aohitM4r6N4ohiVkCecP ...<redacted>... eWmJRuvsSxDg/OY=

# capture the encrypted key material
$ ENCRYPTED_KEY=C+/puHn1v5p7aohitM4r6N4ohiVkCecP ...<redacted>... eWmJRuvsSxDg/OY=

# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE

Encrypted Nonce                            IV
TxrgdayWnM5OB3JoYuQR97oulxvREptk8TzciQ==   7BiIpcbGxXBzuXZP

# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=TxrgdayWnM5OB3JoYuQR97oulxvREptk8TzciQ==
$ IV=7BiIpcbGxXBzuXZP

# create a root key using an import token, provide an encrypted key, nonce, and initialization vector (IV)
$ KEY_ID=$(ibmcloud kp key create my-imported-root-key -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV --output json | jq -r '.["id"]')

$ echo $KEY_ID

c42c6f2c-8b67-4016-b2c3-99fba9490f5d

# list keys - verify the key was created
$ ibmcloud kp keys

Retrieving keys...
OK
Key ID                                 Key Name
c42c6f2c-8b67-4016-b2c3-99fba9490f5d   my-imported-root-key

# delete the root key
$ ibmcloud kp key delete $KEY_ID

Deleting key: c42c6f2c-8b67-4016-b2c3-99fba9490f5d, from instance: a192d603-0b8d-452f-aac3-f9e1f95e7411...
OK
Deleted Key
c42c6f2c-8b67-4016-b2c3-99fba9490f5d

# list keys - verify the key was deleted
$ ibmcloud kp keys

Retrieving keys...
OK
Key ID   Key Name

2단계 - 키를 복원하는 데 필요한 가져오기 토큰을 작성하고 키 복원

# NOTE: "kp key restore" requires an import token to complete the process,
# if you follow this example, the previously created import token may still
# exist and the example works; otherwise, if the import token has expired then
# you need to create a new import token prior to restoring the key

# create an import token that expires in 5 minutes and allows 10 retrievals
$ ibmcloud kp import-token create -e 300 -m 10

Created                         Expires                         Max Retrievals   Remaining Retrievals
2020-06-18 12:30:54 +0000 UTC   2020-06-18 12:35:54 +0000 UTC   10               10

# extract the nonce that was created by the "kp import-token create" command
$ NONCE=$(ibmcloud kp import-token show | jq -r '.["nonce"]')

$ echo $NONCE

N3x8F0ihAZ51nj6M

# extract the public key that was created by the "kp import-token create" command
$ PUBLIC_KEY=$(ibmcloud kp import-token show | jq -r '.["payload"]')

$ echo $PUBLIC_KEY

LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0t ...<redacted>... QyBLRVktLS0tLQo=

# encrypt the key material using the public key
$ ibmcloud kp import-token key-encrypt -k $KEY_MATERIAL -p $PUBLIC_KEY

Encrypted Key
Ch7hcsT1EOfSdghjOHKAemBZuzDoqJoH ...<redacted>... F4p/mkGT/EQJS5o=

# capture the encrypted key material
$ ENCRYPTED_KEY=Ch7hcsT1EOfSdghjOHKAemBZuzDoqJoH ...<redacted>... F4p/mkGT/EQJS5o=

# encrypt the nonce
$ ibmcloud kp import-token nonce-encrypt -k $KEY_MATERIAL -n $NONCE

Encrypted Nonce                            IV
nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA==   N6oLJnUqaKF3v5Sd

# capture the encrypted nonce and the initialization vector (IV)
$ ENCRYPTED_NONCE=nrrCczvYXvc6T7J2G+EOLjHZO1cpPyu/nhsIlA==
$ IV=N6oLJnUqaKF3v5Sd

# restore the deleted key
$ ibmcloud kp key restore $KEY_ID -k $ENCRYPTED_KEY -n $ENCRYPTED_NONCE -v $IV --output json

{
    "id": "c42c6f2c-8b67-4016-b2c3-99fba9490f5d",
    "name": "my-imported-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:key:c42c6f2c-8b67-4016-b2c3-99fba9490f5d"
}

# list keys - verify the key was restored
$ ibmcloud kp keys

Retrieving keys...
OK
Key ID                                 Key Name
c42c6f2c-8b67-4016-b2c3-99fba9490f5d   my-imported-root-key

필수 매개변수

  • KEY_ID_OR_ALIAS

    복원하려는 키의 v4 UUID 또는 별칭입니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -k, --key-material

    Deprecated 이전에 가져온 base64로 인코딩된 키의 키 자료입니다.

    import token을 사용하여 루트 키를 작성한 경우 -k, --key-material 옵션의 값은 암호화된 자료 키입니다. 가져오기 토큰을 사용하여 루트 키를 작성하고 가져오기 토큰을 사용하여 루트 키를 복원하는 예 2를 참조하십시오.

  • -n, --encrypted-nonce

    Deprecated 암호화된 nonce를 제공하여 키 가져오기 요청을 확인하십시오.

    자세한 정보는 kp import-token nonce-encrypt를 참조하십시오.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • -v, --iv

    Deprecated nonce를 암호화한 후 생성되는 초기화 벡터(IV)를 제공하십시오.

    자세한 정보는 kp import-token nonce-encrypt를 참조하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key-rings

kp 인스턴스와 연관된 키 링을 나열합니다.

이 예에서는 CLI 플러그인을 사용하여 지정된 인스턴스에 적합한 키 링을 나열합니다.

ibmcloud kp key-rings -i <INSTANCE_ID>

필수 매개변수

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

kp key-ring create

kp 인스턴스에 키 링을 작성합니다.

이 예에서는 CLI 플러그인을 사용하여 지정된 인스턴스에 키 링을 작성하는 방법을 보여줍니다.

ibmcloud kp key-ring create KEY_RING_ID -i <INSTANCE_ID>

필수 매개변수

  • KEY_RING_ID

    키 링의 경우 2자 이상 100자 이하의 영숫자 참조입니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

kp key-ring delete

kp 인스턴스에서 키 링을 삭제합니다.

이 예에서는 CLI 플러그인을 사용하여 지정된 인스턴스에 키 링을 삭제하는 방법을 보여줍니다. 강제 실행 (-f) 이 추가되었습니다.

ibmcloud kp key-ring delete KEY_RING_ID -i <INSTANCE_ID> -f

필수 매개변수

  • KEY_RING_ID

    키 링의 경우 2자 이상 100자 이하의 영숫자 참조입니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -f, --force

    제거됨 상태의 키가 있는 키 링을 강제로 삭제합니다. 다른 상태의 키가 있는 키 링을 삭제하지 않습니다. 키 링이 영구 삭제됨 상태의 키를 포함하고 이 플래그가 추가되지 않으면 키 링 삭제가 실패합니다.

kp key rotate

Key Protect 서비스에 저장되는 루트 키를 순환합니다.

루트 키를 순환할 때 키를 새 키 자료로 대체합니다.

Key Protect가 키를 작성한 경우(키가 -k 매개변수를 사용하여 작성되지 않은 경우)에는 Key Protect이(가) 새 키를 작성합니다. 다음을 수행할 수 없습니다 와 함께 kp key rotate 를 지정할 수 없습니다 -k IMPORT의 경우, 조치 문자열(예: "REPLACE into ...") 매개변수에서 컬럼 목록의 닫는 괄호 이후에 공백 이외의 문자가 있습니다.

키를 생성하고 키 자료를 제공한 경우 (kp key create key-name -k $KEY_MATERIAL)를 제공했다면 키를 회전할 때 새 키 머티리얼( 머티리얼을 제공해야 합니다(kp key rotate $KEY_ID_OR_ALIAS -k $NEW_KEY_MATERIAL)

standard 키, 즉 다음을 사용하여 만든 키는 회전할 수 없습니다 kp create key-name --standard-key 명령을 사용합니다.

ibmcloud kp key rotate KEY_ID_OR_ALIAS
        -i, --instance-id  INSTANCE_ID
    [--key-ring           KEY_RING_ID]
    [-k, --key-material KEY_MATERIAL]

예제

다음은 kp key rotate의 예제입니다.

예제 1

루트 키를 순환합니다.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad   my-root-key

# rotate the key
$ ibmcloud kp key rotate 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad

Rotating root key...
OK

# show key details
$ ibmcloud kp key show 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad

Grabbing info for key id: 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad...
OK
Key ID                                 Key Name      Description   Creation Date                   Expiration Date
1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad   my-root-key                 2020-05-06 17:25:22 +0000 UTC   Key does not expire

# create a new key material
$ NEW_KEY_MATERIAL=$(openssl rand -base64 32)

# Key Protect created the root key, providing a new key material will fail
$ ibmcloud kp key rotate 1a6d5be8-287c-4eb3-9c44-cf0c2b0d67ad -k $NEW_KEY_MATERIAL

Rotating root key...
FAILED

예제 2

base64로 인코딩되었거나 가져온 토큰 키를 순환합니다.

먼저 base64 값 또는 가져온 토큰에서 루트 키를 작성하십시오.

# create a random, base64-encoded, 32-byte key material
$ KEY_MATERIAL=$(openssl rand -base64 32)

# create a root key from a base64-encoded value
$ ibmcloud kp key create my-base64-root-key -k $KEY_MATERIAL

Creating key: 'my-base64-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
e55f86ab-6984-4594-ad23-3024f6440a58   my-base64-root-key

# create a new key material
$ NEW_KEY_MATERIAL=$(openssl rand -base64 32)

# rotate the key
$ ibmcloud kp key rotate e55f86ab-6984-4594-ad23-3024f6440a58 -k $NEW_KEY_MATERIAL

Rotating root key...
OK

# the key was created from a key material, NOT providing a new key material will fail
$ ibmcloud kp key rotate e55f86ab-6984-4594-ad23-3024f6440a58

Rotating root key...
FAILED

예제 3

이 예제는 다음을 수행하는 방법을 보여줍니다.

  1. 루트 키 작성

  2. 데이터 암호화 키(DEK)를 작성하십시오. 이 항목은 plaintext입니다.

  3. 루트 키로 DEK를 랩핑하는 경우 ciphertext이 작성됩니다.

  4. 루트 키 순환

  5. 원래 DEK(일반 텍스트) 및 새 암호문(새 암호문은 순환된 새 루트 키로 랩핑된 일반 텍스트임)을 표시하기 위해 암호문 랩핑 해제

  6. 원래 DEK(일반 텍스트)를 표시하기 위해 새 암호문 랩핑 해제

# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')

$ echo $KEY_ID

5b976173-7804-4f82-acfa-bb98098bc528

# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)

$ echo $PLAINTEXT

UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=

# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')

$ echo $CIPHERTEXT

eyJjaXBoZXJ0ZXh0IjoiQkFrTlJrS2Q0 ...<redacted>... ODA5OGJjNTI4In0=

# rotate the root key
$ ibmcloud kp key rotate $KEY_ID

Rotating root key...
OK

# show key details
$ ibmcloud kp key show $KEY_ID --output json

{
    "id": "5b976173-7804-4f82-acfa-bb98098bc528",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-10T18:09:27Z",
    "lastUpdateDate": "2020-06-10T18:13:31Z",
    "lastRotateDate": "2020-06-10T18:13:31Z",
    "keyVersion": {
        "id": "4330715a-918b-4718-b5ca-9475a214067e",
    "creationDate": "2020-06-10T18:13:31Z"
    },
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5b976173-7804-4f82-acfa-bb98098bc528"
}

# unwrap the ciphertext, reveal the original DEK (plaintext),
# and see the new ciphertext (the plaintext wrapped with the rotated root key)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT --output json

{
    "Plaintext": "UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=",
    "Rewrapped Plaintext": "eyJjaXBoZXJ0ZXh0IjoiS0FITEFRWjdh ...<redacted>... NWEyMTQwNjdlIn0="
}

# capture the new (rewrapped) plaintext
$ NEWCIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiS0FITEFRWjdh ...<redacted>... NWEyMTQwNjdlIn0=

# unwrap the ciphertext and reveal the original DEK (plaintext)
$ ibmcloud kp key unwrap $KEY_ID $NEWCIPHERTEXT --output json

{
    "Plaintext": "UPJ4YDwbQMjQG/aqlHsPhHV1CBkpIXngLHFS5+i4UZ4=",
    "Rewrapped Plaintext": ""
}

필수 매개변수

  • KEY_ID_OR_ALIAS

    회전하려는 루트 키의 v4 UUID 또는 별칭입니다.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -k, --key-material

    초기에 --key-material 매개변수 없이(즉, kp key create my-key) 생성된 키를 순환하려면 --key-material 매개변수를 생략하십시오.

    --key-material 매개변수를 사용하여 키가 작성된 경우 기존 루트 키 순환에 사용하는 base64로 인코딩된 새 키 자료를 지정하십시오.

    초기에 서비스로 가져온 키를 순환하려면 새 32바이트(256비트) 키를 제공하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key schedule-delete

dual-auth-delete 정책을 사용하는 키의 경우 키를 삭제하려면 두 관리자의 권한이 필요합니다.

dual-auth-delete 정책을 사용하는 키를 삭제하려면 다음 프로세스를 따르십시오.

  1. 키를 작성하고 dual-auth-delete 정책을 사용으로 설정합니다.

  2. 사용자 1은 다음을 사용하여 키 삭제를 스케줄 (권한 부여) 합니다. kp key schedule-delete 명령

  3. 사용자 2가 키 삭제 스케줄(권한 부여)합니다.

  4. 사용자 인터페이스, API 및 CLI에서 지원되는 두 번째 schedule-delete가 수행된 후 키가 삭제됩니다.

  5. 두 번째 권한 부여가 7일 이내에 발생하지 않으면 키가 기본 상태로 돌아갑니다.

dual-auth-delete 정책을 사용으로 설정하는 두 가지 방법이 있습니다.

  • kp key policy-update dual-auth-delete를 사용하여 단일 키에 대한 정책 설정
  • 다음을 사용하여 인스턴스에 대한 정책을 설정하십시오. kp instance policy-update dual-auth-delete; 인스턴스 정책이 사용으로 설정된 후에 작성된 모든 키는 인스턴스 정책 설정을 상속합니다.

kp key cancel-delete 명령은 이전 권한을 취소하거나 제거합니다.

ibmcloud kp key schedule-delete KEY_ID_OR_ALIAS
    -i, --instance-id INSTANCE_ID
    [--key-ring         KEY_RING_ID]

다음은 삭제할 키를 예약하는 예입니다.

# schedule this key to be deleted
$ ibmcloud kp key schedule-delete $KEY_ID_OR_ALIAS

Scheduling key for deletion...
OK

# this key has a dual-auth-delete policy
$ ibmcloud kp key policies $KEY_ID_OR_ALIAS --output json

[
  {
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-06-22T19:13:00Z",
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:a192d603-0b8d-452f-aac3-f9e1f95e7411:policy:2427dbde-6cff-41eb-8b5a-ff26b038cafc",
    "lastUpdateDate": "2020-06-22T21:36:16Z",
    "updatedBy": "user id ...<redacted>...",
    "dualAuthDelete": { "enabled": true
    }
  }
]

필수 매개변수

  • KEY_ID_OR_ALIAS

    삭제하려는 키의 v4 UUID 또는 별칭입니다. 사용 가능한 키 목록을 검색하려면 kp keys 명령을 실행하십시오.

선택적 매개변수

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key show

키 메타데이터 및 키 자료와 같은 키에 대한 세부사항을 검색합니다.

키를 루트 키로 지정한 경우 시스템은 이 키의 키 자료를 리턴할 수 없습니다.

ibmcloud kp key show KEY_ID_OR_ALIAS
        -i, --instance-id INSTANCE_ID
    [--key-ring          KEY_RING_ID]
    [-o, --output      OUTPUT]

예제

다음은 kp key show의 예제입니다.

예제 1

루트 키를 작성하고 세부사항을 표시합니다.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
8635b804-9966-4918-a16b-d561fdbf181f   my-root-key

# show key details
$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f

Grabbing info for key id: 8635b804-9966-4918-a16b-d561fdbf181f...
OK
Key ID                                 Key Name      Description   Creation Date                   Expiration Date
8635b804-9966-4918-a16b-d561fdbf181f   my-root-key                 2020-05-05 19:58:02 +0000 UTC   Key does not expire

예제 2

이는 kp key show 명령. 이 예제에서는 모든 JSON 키/값 쌍이 표시되도록 키가 순환되었습니다.

$ ibmcloud kp key show 8635b804-9966-4918-a16b-d561fdbf181f --output json

{
    "id": "8635b804-9966-4918-a16b-d561fdbf181f",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-05-05T19:58:02Z",
    "lastUpdateDate": "2020-05-05T19:58:24Z",
    "lastRotateDate": "2020-05-05T19:58:24Z",
    "keyVersion": {
        "id": "85b65b20-4165-4da3-8ba9-880e72390461",
        "creationDate": "2020-05-05T19:58:24Z"
    },
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:8635b804-9966-4918-a16b-d561fdbf181f"
}
설명
ID KEY_ID이며 고유하고 CLI가 KEY_ID를 지정할 때마다 사용됩니다.
이름 키가 작성될 때 제공된 이름입니다.
유형 API가 REST 호출에서 content-type을 설정하는 데 사용됩니다.
algorithmType 알고리즘 유형은 고급 암호화 표준(AES) 또는 암호화 블록 체인(CBC)입니다.
createdBy 키를 작성한 사용자 ID입니다.
creationDate 키가 작성된 날짜 및 시간입니다.
lastUpdateDate 키가 마지막으로 업데이트된 날짜 및 시간입니다.
lastRotateDate 키가 마지막으로 순환된 날짜 및 시간입니다. 이 항목은 키가 순환된 경우에만 존재합니다.
keyVersion/id 최신 버전의 루트 키를 식별합니다.
keyVersion / creationDate 키 자료가 마지막으로 업데이트된 날짜 및 시간입니다.
extractable 키 자료가 서비스를 중단할 수 있는지 여부를 판별하는 부울합니다. false로 설정되면 Key Protect가 키를 랩핑 및 랩핑 해제 조치에 사용되는 추출 불가능 루트 키로 지정합니다. true로 설정되면 Key Protect가 키를 앱 및 서비스에 저장할 수 있는 표준 키로 지정합니다. false로 설정한 후에는 true로 변경할 수 없습니다.
상태 1 - 키가 활성입니다. 2 - 키가 일시중단되었습니다. 키 상태를 참조하십시오.
CRN 클라우드 리소스 이름(CRN)

필수 매개변수

  • KEY_ID_OR_ALIAS

    표시할 루트 키의 v4 UUID 또는 별명입니다.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp 키 동기화

이 하위 명령은 키에 대한 연관된 자원을 동기화합니다.

ibmcloud kp key sync KEY_ID
     -i, --instance-id INSTANCE_ID
    [--key-ring             KEY_RING_ID]
    [-o, --output      FORMAT]

예제

kp key sync의 예입니다.

키를 동기화하고 결과를 표시합니다.

# synchronize the associated resources for a given key
$ ibmcloud kp key sync 94c06f9c-a07a-4961-8548-553cf7431f18

Synchronizing key...
OK
Key's associated resources are synchronized successfully

필수 매개변수

  • KEY_ID

    동기화할 키의 ID입니다.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp key update

기존 키 링 또는 다음 인스턴스의 새 키 링으로 키를 업데이트하십시오. Key Protect 인스턴스에 저장되는 루트 키를 사용하십시오.

ibmcloud kp key update KEY_ID_OR_ALIAS
        -i, --instance-id         INSTANCE_ID
        -r, --new-key-ring        KEY_RING_ID
    [-o, --output              OUTPUT]

필수 매개변수

  • KEY_ID_OR_ALIAS

    표시할 루트 키의 v4 UUID 또는 별명입니다.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

  • -r, --new-key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

선택적 매개변수

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

예제

키 링은 키 작성의 일부로 또는 자체적으로 이미 작성되어 있어야 합니다.

다음은 **kp key update**의 예입니다.

ic kp key update 5f2cc155-fe16-492c-845c-4d1f0688c7ba -r TestRing

명령을 실행하면 다음과 같은 일반적인 결과가 나타납니다.

Updating key...
OK
Key ID                                 Key Name             Key Ring ID   
5f2cc155-fe16-492c-845c-4d1f0688c7ba   TestKey                           TestRing   

kp key unwrap

데이터 암호화 키의 랩핑을 해제하려면 Key Protect 인스턴스에 저장되는 루트 키를 사용하십시오.

ibmcloud kp key unwrap KEY_ID_OR_ALIAS CIPHERTEXT_FROM_WRAP
        -i, --instance-id INSTANCE_ID
    [-a, --aad         ADDITIONAL_DATA]
    [--key-ring           KEY_RING_ID]
    [-o, --output      OUTPUT]

예제

다음은 kp key unwrap의 예제입니다.

예제 1

암호문을 랩핑 해제하여 일반 텍스트 데이터 암호화 키(DEK)를 표시합니다.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea   my-root-key

# create a data encryption key (DEK), wrapped with the root key
$ ibmcloud kp key wrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea

Wrapping key...
OK
Ciphertext
eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=

# capture the ciphertext
$ CIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=

# unwrap the ciphertext to reveal the plaintext data encryption key (DEK)
$ ibmcloud kp key unwrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea $CIPHERTEXT

Unwrapping key...
OK
Plaintext                                      Rewrapped Plaintext
mXW4GmBhkRG1+Dzkx1D6dMX99a4KyYwtwbghaaLEQZ0=

예제 2

암호문을 랩핑 해제하고 AAD 정보를 제공합니다.

추가 인증 데이터(AAD)를 제공하는 한 가지 유스 케이스는 암호문을 "비밀번호로 보호"하여 랩핑 해제하기 더욱 어렵게 하는 것입니다.

암호문을 랩핑 해제하고 일반 텍스트 데이터 암호화 키(DEK)를 표시하려면 암호문과 AAD가 필요합니다.

# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')

$ echo $KEY_ID

5f2cc155-fe16-492c-845c-4d1f0688c7ba

# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)

$ echo $PLAINTEXT

H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=

# set the additional authentication data (AAD)
$ AAD1=My-Secret-Password
$ AAD2=My-Verification-Phrase

# wrap the plaintext with the root key and AAD
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -a "$AAD1,$AAD2" -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')

$ echo $CIPHERTEXT

eyJjaXBoZXJ0ZXh0IjoiL1pQUzRLbUxQ ...<redacted>... ZjA2ODhjN2JiIn0=

# unwrap the ciphertext and reveal the original plaintext DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1,$AAD2

Unwrapping key...
OK
Plaintext                                      Rewrapped Plaintext
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=

# this should fail (missing some of the AAD)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1

Unwrapping key...
FAILED

# this should fail (AAD is in a different order)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD2,$AAD1

Unwrapping key...
FAILED

필수 매개변수

  • KEY_ID_OR_ALIAS

    초기 랩 요청에 사용한 루트 키의 v4 UUID 또는 별칭입니다.

  • CIPHERTEXT_FROM_WRAP

    초기 랩핑 오퍼레이션 중에 리턴된 암호화된 데이터 키입니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -a, --aad

    키를 보안하는 데 사용된 추가 인증 데이터(AAD)입니다. 각각 쉼표로 구분하여 최대 255개의 문자열을 제공할 수 있습니다. 랩핑 시 AAD를 제공한 경우 랩핑 해제 시 동일한 AAD를 동일한 순서로 지정해야 합니다.

    Key Protect 서비스는 추가 인증 데이터를 저장하지 않습니다. AAD를 제공하는 경우에는 후속 랩핑 해제 요청 중에 동일한 AAD를 액세스 및 제공할 수 있도록 안전한 위치에 데이터를 저장하십시오.

-o, --output

Set the CLI output format. By default, all commands print in table format. To change the output format to JSON, use `--output json`.
  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp키 버전

루트 키를 순환할 때 Key Protect가 새 버전의 키를 작성합니다. Key Protect 인스턴스에서 KeyID 또는 키 별명에 사용 가능한 모든 키 버전을 나열 하십시오.

ibmcloud kp key versions KEY_ID_OR_ALIAS
        -i, --instance-id INSTANCE_ID
    [-r, --key-ring                KEY_RING_ID]
    [-n, --number-of-key-versions  VERSION_LIMIT]
    [-o, --output                  OUTPUT]
    [-s, --starting-offset         OFFSET]
    [-t, --total-count             TOTAL_COUNT]
    [-a, --all-key-states          ALL_KEY_STATES]

예제

다음은 kp key versions의 예제입니다.

예제 1

한 가지 유스 케이스는 키 버전 히스토리를 보고 보안 관리자로서 루트 키의 순환 히스토리를 감사하는 것입니다.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea   my-root-key

# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea

Rotating root key...
OK

# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea

Retrieving key Versions...
OK
Key Version ID                         Creation Date   
21562e93-8882-420e-90a7-912c70023373   2022-07-08T17:02:10Z
390086ac-76fa-4094-8cf3-c0829bd69526   2022-07-08T17:02:40Z

예제 2

보안 관리자로서 루트 키를 감사하고 히스토리를 보기 위한 동일한 유스 케이스 (JSON 출력의 총 개수 포함).

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea   my-root-key

# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea

Rotating root key...
OK

# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -t -o json
{
        "metadata": {
                "collectionType": "application/vnd.ibm.kms.key.version+json",
                "collectionTotal": 2,
                "totalCount": 2
        },
        "resources": [
                {
                        "id": "21562e93-8882-420e-90a7-912c70023373",
                        "creationDate": "2022-07-08T17:02:10Z"
                },
                {
                        "id": "390086ac-76fa-4094-8cf3-c0829bd69526",
                        "creationDate": "2022-07-08T17:02:40Z"
                }
        ]
}

예제 3

또 다른 유스 케이스는 지난 해의 월별 순환에서 키 세트에 대한 처음 12개의 키 버전을 나열합니다.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea   my-root-key

# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea

Rotating root key...
OK

# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -n 12 -o json
{
        "metadata": {
                "collectionType": "application/vnd.ibm.kms.key.version+json",
                "collectionTotal": 12
        },
        "resources": [
                {
                        "id": "21562e93-8882-420e-90a7-912c70023373",
                        "creationDate": "2021-07-08T17:02:10Z"
                },
                {
                        "id": "390086ac-76fa-4094-8cf3-c0829bd69526",
                        "creationDate": "2021-08-08T17:02:40Z"
                },[...10x]
        ]
}

예제 4

또 다른 유스 케이스는 지난 2년동안 매월 순환되는 키 세트에 대한 두 번째 12개의 키 버전을 나열합니다.

ibmcloud kp 키 버전 $KEY_ID_OR_ALIAS -n 12 -s 12

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea   my-root-key

# rotate the root key
$ ibmcloud kp key rotate 807eb0a6-cc10-4bfe-8331-41a6f712c4ea

Rotating root key...
OK

# Inspect the versions
$ ibmcloud kp key versions 807eb0a6-cc10-4bfe-8331-41a6f712c4ea -n 12 -s 12 -o json
{
        "metadata": {
                "collectionType": "application/vnd.ibm.kms.key.version+json",
                "collectionTotal": 12
        },
        "resources": [
                {
                        "id": "21562e93-8882-420e-90a7-912c70023373",
                        "creationDate": "2021-07-08T17:02:10Z"
                },
                {
                        "id": "390086ac-76fa-4094-8cf3-c0829bd69526",
                        "creationDate": "2021-08-08T17:02:40Z"
                },[...10x]
        ]
}

예제 5

현재 활성 상태가 아닌 키의 버전 수를 리턴하는 선택적 플래그입니다. 이전에는 다음 예제에서와 같이 명령이 실패했습니다.

# Attempt to show version count
$ ibmcloud kp key versions af61298c-d75d-42a8-aa76-e04178cf4685 -i 99980ccc-d482-4cd0-bb41-deb4f7f1eb92 -t

Retrieving key Versions...
FAILED
KEY_ACTION_INVALID_STATE_ERR
Key is not in a valid state
Correlation-ID:a494bf49-be82-426f-88d8-17b58cc8634d

CLI 버전 0.8.0 이상에서는 다음 예제와 같이 -a 플래그를 추가할 때 명령이 성공합니다.

# Attempt to show version count
$ ibmcloud kp key versions af61298c-d75d-42a8-aa76-e04178cf4685 -i 99980ccc-d482-4cd0-bb41-deb4f7f1eb92 -t -a

Retrieving key Versions...
OK
TotalCount: 2
Key Version ID                         Creation Date
14dfde20-a751-4c3e-b6b0-e8d00a17d8d1   2023-06-22T15:16:09Z
af61298c-d75d-42a8-aa76-e04178cf4685   2023-06-22T15:10:28Z

-a 플래그가 제공되지 않은 경우, KEY_ACTION_INVALID_STATE_ERR 는 여전히 활성 이외의 상태에 있는 키에 대해 리턴됩니다.

필수 매개변수

  • KEY_ID_OR_ALIAS

    초기 랩 요청에 사용한 루트 키의 v4 UUID 또는 별칭입니다.

  • -i, --instance-ID

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

  • -n --number-of-key-versions

    제공된 정수 값으로 검색할 키 버전 수를 제한합니다 (기본값: 200).

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • -s --starting-offset

    제공된 정수 값으로 지정된 오프셋에서 키 버전을 검색합니다.

  • -t --total-count

    제공된 정수 값으로 키의 총 키 버전 수를 검색하는 데 사용됩니다.

  • -a --all-key-states

    활성 상태가 아닌 키를 포함하여 모든 키 상태에 대한 버전 수를 리턴하는 선택적 플래그입니다.

kp key wrap

데이터 암호화 키(DEK)를 랩핑하려면 Key Protect 인스턴스에 저장되는 루트 키를 사용하십시오. DEK는 일반적으로 "기타" 정보를 암호화하는 데 사용됩니다.

루트 키로 DEK를 랩핑할 때 Key Protect은(는) 암호화된 데이터의 무결성 및 개인정보를 보호하기 위해 여러 알고리즘의 장점을 결합합니다.

standard 키, 즉 다음을 사용하여 만든 키는 래핑할 수 없습니다 -s 매개변수 (ibmcloud kp key create my-key-name -s).

ibmcloud kp key wrap KEY_ID_OR_ALIAS
        -i, --instance-id INSTANCE_ID
    [--key-ring           KEY_RING_ID]
    [-a, --aad         ADDITIONAL_DATA]
    [-o, --output      OUTPUT]
    [-p, --plaintext   DATA_KEY]

우수 사례

데이터 암호화 키(DEK)를 랩핑하면 ciphertext이 작성됩니다. 암호문은 랩핑 해제될 때 원래 DEK를 표시하는 암호화된 정보입니다.

Key Protect 서비스는 DEK를 지정하지 않습니다. kp key unwrap 명령을 사용하여 DEK를 검색할 수 있도록 하려면 암호문을 스토리지에 저장하거나 지속하십시오.

일반 텍스트 DEK를 스토리지에 저장하거나 지속하지 않는 것이 좋습니다. 애플리케이션에서 스토리지의 암호 텍스트를 로드하고 Key Protect를 호출하여 일반 텍스트 DEK를 가져오고 DEK를 사용하여 정보의 "다른" 부분을 암호화 또는 랩핑하십시오.

DEK를 지속적 스토리지에 저장하지 마십시오. DEK를 노출하면 다른 사용자가 데이터를 복호화할 수 있습니다.

루트 키가 랩핑될 때마다 새 암호문이 작성됩니다.

예제

다음은 kp key wrap의 예제입니다.

예제 1

Key Protect가 base64로 인코딩된 새 데이터 암호화 키(DEK)를 작성하여 루트 키로 랩핑합니다.

# create a root key
$ ibmcloud kp key create my-root-key

Creating key: 'my-root-key', in instance: '390086ac-76fa-4094-8cf3-c0829bd69526'...
OK
Key ID                                 Key Name
807eb0a6-cc10-4bfe-8331-41a6f712c4ea   my-root-key

# create a new key and wrap it with the root key, creating a DEK (this is the ciphertext)
$ ibmcloud kp key wrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea

Wrapping key...
OK
Ciphertext
eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=

# capture the ciphertext
$ CIPHERTEXT=eyJjaXBoZXJ0ZXh0IjoiKzhjbHVqcUNP ...<redacted>... NmY3MTJjNGViIn0=

# unwrap the ciphertext to reveal the plaintext (DEK)
$ ibmcloud kp key unwrap 807eb0a6-cc10-4bfe-8331-41a6f712c4ea $CIPHERTEXT

Unwrapping key...
OK
Plaintext                                      Rewrapped Plaintext
mXW4GmBhkRG1+Dzkx1D6dMX99a4KyYwtwbghaaLEQZ0=

예제 2

base64로 인코딩된 데이터 암호화 키(DEK)를 생성하여 루트 키로 랩핑합니다.

# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')

$ echo $KEY_ID

9052d914-bebe-4177-90e9-6073a167b507

# create a random, base64-encoded, 32-byte data encryption key (DEK)
$ PLAINTEXT=$(openssl rand -base64 32)

$ echo $PLAINTEXT

tEqoiCu9CeUsbqRe6yBUkrJg80QKKG/z46OkX0YQMV8=

# wrap the plaintext key with the root key, creating a DEK (this is the ciphertext)
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -p $PLAINTEXT --output json | jq -r '.["Ciphertext"]')

$ echo $CIPHERTEXT

eyJjaXBoZXJ0ZXh0IjoiTkdQRlhCb1dT ...<redacted>... M2ExNjdiNTA3In0=

# unwrap the ciphertext and reveal the original DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT

tEqoiCu9CeUsbqRe6yBUkrJg80QKKG/z46OkX0YQMV8=

예제 3

루트 키를 랩칭하고 AAD 정보를 제공합니다.

추가 인증 데이터(AAD)를 제공하는 한 가지 유스 케이스는 "비밀번호로 보호"하고 암호문에 "검증 단계"를 추가하여 랩핑 해제하기 더욱 어렵게 하는 것입니다.

암호문을 랩핑 해제하고 일반 텍스트 DEK를 표시하려면 암호문과 AAD가 필요합니다.

# create a root key
$ KEY_ID=$(ibmcloud kp key create my-root-key --output json | jq -r '.["id"]')

$ echo $KEY_ID

5f2cc155-fe16-492c-845c-4d1f0688c7ba

# set the additional authentication data (AAD)
$ AAD1=My-Secret-Password
$ AAD2=My-Verification-Phrase

# wrap the plaintext DEK with the root key and AAD
$ CIPHERTEXT=$(ibmcloud kp key wrap $KEY_ID -a "$AAD1,$AAD2" --output json | jq -r '.["Ciphertext"]')

$ echo $CIPHERTEXT

eyJjaXBoZXJ0ZXh0IjoiL1pQUzRLbUxQ ...<redacted>... ZjA2ODhjN2JiIn0=

# unwrap the ciphertext and reveal the original DEK
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1,$AAD2

Unwrapping key...
OK
Plaintext                                      Rewrapped Plaintext
H4ZfQe66aKcxirfCdNZ/3Na0JECP6HsAM3yclKmIfPQ=

# this should fail (missing some of the AAD)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD1

Unwrapping key...
FAILED

# this should fail (AAD is in a different order)
$ ibmcloud kp key unwrap $KEY_ID $CIPHERTEXT -a $AAD2,$AAD1

Unwrapping key...
FAILED

필수 매개변수

  • KEY_ID_OR_ALIAS

    래핑에 사용할 루트 키의 v4 UUID 또는 별칭입니다. 표준 키는 랩핑할 수 없습니다.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -a, --aad

    키를 보안하는 데 사용되는 추가 인증 데이터(AAD)입니다. AAD는 키 컨텐츠의 무결성을 검사하는 문자열의 배열입니다. 각 문자열은 최대 255자입니다.

    랩핑 요청 중에 AAD를 제공하는 경우 후속 랩핑 해제 요청 중에 동일한 AAD를 동일한 순서로 지정해야 합니다.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

  • -p, --plaintext

    plaintext 은 루트 키( KEY_ID 또는 ALIAS 매개변수로 식별)로 래핑되는 base64-encoded 데이터 암호화 키(DEK)를 지정합니다.

    관리하고 보호할 base64로 인코딩된 데이터 암호화 키(DEK)입니다. 기존 키를 가져오려면 32바이트(256비트) 키를 제공하십시오.

    새 DEK를 생성하고 랩핑하려면 --plaintext 매개변수를 생략하십시오.

  • --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

kp keys

Key Protect 인스턴스에서 사용 가능한 키를 나열합니다.

키는 key id 순서로 나열됩니다. 예제 5를 참조하십시오.

ibmcloud kp keys
        -i, --instance-id      INSTANCE_ID
        [-b --sort-by          SORT_BY]
        [-c, --crn]
        [-f, --key-filter      FILTERS]
        [--key-ring            KEY_RING_ID]
        [--key-states          STATES]
        [-l --key-search       KEY_SEARCH]
        [-n, --number-of-keys  NUMBER_OF_KEYS]
        [-o, --output          OUTPUT]
        [-s, --starting-offset STARTING_OFFSET]
        [-t, --key-type        TYPE]

예제

다음은 kp keys의 예제입니다.

예제 1

키를 나열합니다. 이는 기본적으로 인스턴스의 처음 200개키만 나열합니다. 더 많거나 더 적은 수의 키를 표시하려면 --number-of-keys 매개변수의 값을 제공하십시오.

# list keys
$ ibmcloud kp keys

Retrieving keys...
OK
Key ID                                 Key Name
5f2cc155-fe16-492c-845c-4d1f0688c7ba   my-root-key
c36e9f3a-feaf-4033-8603-687784dc7e51   my-root-key

예제 2

키를 나열하고 다음을 사용하여 클라우드 리소스 이름(CRN)을 표시합니다 --crn IMPORT의 경우, 조치 문자열(예: "REPLACE into ...") 매개변수에서 컬럼 목록의 닫는 괄호 이후에 공백 이외의 문자가 있습니다.

# list keys and show the cloud resource name (CRN)
$ ibmcloud kp keys -c

Retrieving keys...
OK
Key ID                                 Key Name      CRN
5f2cc155-fe16-492c-845c-4d1f0688c7ba   my-root-key   crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5f2cc155-fe16-492c-845c-4d1f0688c7ba
c36e9f3a-feaf-4033-8603-687784dc7e51   my-root-key   crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:c36e9f3a-feaf-4033-8603-687784dc7e51

예제 3

JSON 형식으로 키를 나열합니다.

--output json 매개변수는 --crn(Cloud Resource Name) IMPORT의 경우, 조치 문자열(예: "REPLACE into ...") 매개변수에서 컬럼 목록의 닫는 괄호 이후에 공백 이외의 문자가 있습니다.

# list keys
$ ibmcloud kp keys --output json

[
  {
    "id": "5f2cc155-fe16-492c-845c-4d1f0688c7ba",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-05-10T18:04:01Z",
    "lastUpdateDate": "2020-05-10T18:04:01Z",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:5f2cc155-fe16-492c-845c-4d1f0688c7ba"
    },
    {
        "id": "c36e9f3a-feaf-4033-8603-687784dc7e51",
    "name": "my-root-key",
    "type": "application/vnd.ibm.kms.key+json",
    "algorithmType": "AES",
    "createdBy": "user id ...<redacted>...",
    "creationDate": "2020-05-10T17:56:37Z",
    "lastUpdateDate": "2020-05-10T17:56:37Z",
    "extractable": false,
    "state": 1,
    "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:390086ac-76fa-4094-8cf3-c0829bd69526:key:c36e9f3a-feaf-4033-8603-687784dc7e51"
  }
]

예제 4

키를 나열하고 그 위에 반복하여 세부 정보를 표시합니다.

# list keys and convert to a list
$ KEYS=$(ibmcloud kp keys --output json | jq -r '.[] | .id')

$ for key in $(echo "${KEYS}"); do
    ibmcloud kp key show ${key}
done

Grabbing info for key id: 5f2cc155-fe16-492c-845c-4d1f0688c7ba...
OK
Key ID                                 Key Name      Description   Creation Date                   Expiration Date
5f2cc155-fe16-492c-845c-4d1f0688c7ba   my-root-key                 2020-05-10 18:04:01 +0000 UTC   Key does not expire

Grabbing info for key id: c36e9f3a-feaf-4033-8603-687784dc7e51...
OK
Key ID                                 Key Name      Description   Creation Date                   Expiration Date
c36e9f3a-feaf-4033-8603-687784dc7e51   my-root-key                 2020-05-10 17:56:37 +0000 UTC   Key does not expire

예제 5

20개의 키를 작성하고 kp keys -n -s 옵션을 사용하여 5개의 그룹으로 표시합니다.

# create 20 test keys
$ for I in {1..20}; do
    KEY_ID=$(ibmcloud kp key create my-test-key-$I --output json | jq -r '.["id"]')
    KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
    echo $KEY_ID $KEY_NAME
done

b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20

# this is the same list sorted in KEY_ID order
# this is the order we expect when listing keys

10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13

3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4

87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11

cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5

# define a function for listing keys
$ list_keys () {
    N=$1
    S=$2
    KEYS=$(ibmcloud kp keys --number-of-keys $N --starting-offset $S --output json | jq -r '.[] | .id')
    for KEY_ID in $(echo "${KEYS}"); do
        KEY_ID=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["id"]')
    KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
    echo $KEY_ID $KEY_NAME
    done
}

# list the first group of keys
$ list_keys 5 0

10954149-0217-472d-8137-42fc330dbd03 my-test-key-16
16276369-ba81-4eb5-be92-f13512147ad4 my-test-key-14
215f592c-3e42-47b6-867c-3cc1cce8a8fd my-test-key-2
3a5a3b52-6942-463d-9f7a-5b216bbf5123 my-test-key-18
3b4b0511-00df-48e6-ad65-fad35bb6ce17 my-test-key-13

# list the second group of keys
$ list_keys 5 5

3d683d56-d340-40cb-b8b6-605dcfded01f my-test-key-15
3ee0d859-2968-4444-8e4d-3d28614f055c my-test-key-10
54dd2745-7718-487f-85e6-a67e758dd945 my-test-key-17
62090ba8-7363-408e-9edc-aa9fb69c09be my-test-key-12
768c9ceb-368b-46f7-9b1d-be211e036fe1 my-test-key-4

# list the third group of keys
$ list_keys 5 10

87679194-52d0-42af-81e1-bffd64f87315 my-test-key-7
90138be5-1dd1-4eea-b7c1-73cc8609e7f7 my-test-key-19
b70f62a1-4d52-4526-91a9-ce47bf14c2a5 my-test-key-1
b8794334-eea6-4c0d-8fe1-8086300b13f7 my-test-key-6
bc459a2f-56cb-445e-b4ee-9d1866b57560 my-test-key-11

# list the last group of keys
$ list_keys 5 15

cc7faf46-43cf-43b2-be98-7d1815371639 my-test-key-8
cf0a3d8b-4856-4aa5-be6a-88cca465eab0 my-test-key-20
df530c55-39c0-44e8-b7db-397593f70d90 my-test-key-3
e9b08526-3227-406c-b83f-c28844bd952b my-test-key-9
f141be88-5a34-4290-8513-4f01d934e75a my-test-key-5

# delete the test keys
$ KEYS=$(ibmcloud kp keys --output json | jq -r '.[] | .id')

$ for KEY_ID in $(echo "${KEYS}"); do
    KEY_NAME=$(ibmcloud kp key show $KEY_ID --output json | jq -r '.["name"]')
    if [[ $KEY_NAME == *"my-test-key-"* ]]; then
        echo "Deleting... $KEY_NAME $KEY_ID"
    ibmcloud kp key delete $KEY_ID
    fi
done

(output not shown)

예제 6

Key Protect 인스턴스의 키 상태 (Active, Suspended) 를 기반으로 키를 나열합니다.

# list active and suspended keys
$ ibmcloud kp keys --key-states active,suspended

Retrieving keys...
OK
Key ID                                 Key Name
ef2cc155-fe56-492c-845c-4d1f0688c7ba   my-active-key
636e9f3a-feaf-4033-8603-687754dc7e51   my-suspended-key

실시예 7

Key Protect 인스턴스의 키 유형 (루트) 을 기반으로 키를 나열합니다.

# list root keys
$ ibmcloud kp keys -t root

Retrieving keys...
OK
Key ID                                 Key Name
2f1cb135-fa16-40dc-815c-4d1f0ee8c7ba   my-root-key

실시예 8

Key Protect 인스턴스에서 키 이름 또는 별명이 따옴표 없이 문자열 "TEST" 의 문자와 정확히 일치하는 키를 나열합니다.

# list keys with identifiers exactly matching TEST
$ ibmcloud kp keys -l exact:TEST

Retrieving keys...
OK
Key ID                                 Key Name
636e9f3a-feaf-4033-8603-687754dc7e51   TEST

실시예 9

Key Protect 인스턴스의 키를 나열하고 해당 ID및 최신 (하이픈, '-', 내림차순 정렬을 표시함) 으로 시작하여 키가 작성된 날짜를 기반으로 키를 정렬합니다.

# sort keys by id and descending creationDate
$ ibmcloud kp keys -b id,-creationDate

Retrieving keys...
OK
Key ID                                 Key Name
ef2cc155-fe56-492c-845c-4d1f0688c7ba   my-last-key
2f1cb135-fa16-40dc-815c-4d1f0ee8c7ba   my-first-key

필수 매개변수

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -b, --sort-by

    매개변수를 기반으로 키를 정렬하십시오. 결과를 정렬하기 위한 기본 특성은 "id" 입니다. 매개변수 앞의 '-' 는 내림차순으로 정렬됨을 표시합니다. 현재 지원되는 정렬 매개변수는 다음과 같습니다.

    • ID
    • 상태
    • extractable
    • 가져옴
    • creationDate
    • lastUpdateDate
    • lastRotateDate
    • deletionDate
    • expirationDate
  • -c, --crn

    출력에 클라우드 리소스 이름(CRN)을 포함합니다.

  • -f, --key-filter

    매개변수를 기반으로 키를 필터링하십시오. 지원되는 키 필터링 매개변수는 다음과 같습니다.

    • creationDate
    • deletionDate
    • expirationDate
    • extractable
    • lastUpdateDate
    • lastRotateDate
    • 상태

    날짜에 대한 지원 연산자는 다음과 같습니다.

    • GT(초과)
    • gTE(이상)
    • LT(미만)
    • lTE(이하)

    이러한 연산자가 누락된 경우 결과는 정확히 일치합니다.

  • --key-states

    검색할 키의 상태입니다. 올바른 상태를 포함하는 문자열 목록- Active, Suspended, Deactivated, Destroyed. (기본값: active,suspended,deactivated).

  • -l, --key-search

    앞에 추가된 규정자 (예: exact, not, alias, name) 가 있는 검색 문자열을 기반으로 키를 나열합니다. 자세한 정보는 API 문서 를 참조하십시오.

  • -n, --number-of-keys

    검색할 키의 수를 제한합니다. 기본값은 200이고 최대값은 5000입니다.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

    출력을 JSON으로 설정하면(--output json) 클라우드 리소스 이름(CRN)이 출력에 포함됩니다.

  • -r, --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 사용자에게 기본 키 링에 대한 권한이 없으면 필수입니다.

  • -s, --starting-offset

    지정된 오프셋에서 시작하는 키를 검색합니다. 오프셋은 0을 기반으로 합니다. 즉, 오프셋 0이 첫 번째 키입니다.

  • -t, --key-type

    검색할 키의 유형입니다. standard-key 로 설정하면 표준 키가 검색됩니다. root-key 로 설정하면 루트 키가 검색됩니다.

kp region-set

다른 Key Protect 지역 엔드포인트를 대상으로 지정합니다.

ibmcloud kp region-set REGION
        -i, --instance-id INSTANCE_ID
        [-u, --unset]

예제

다음은 kp region-set의 예제입니다.

예제 1

REGION 매개변수가 지정되지 않으면 지역을 선택하라는 프롬프트가 표시됩니다.

# set the region endpoint
$ ibmcloud kp region-set

Select a Region:
1. au-syd
2. ca-tor
3. eu-de
4. eu-gb
5. jp-osa
6. jp-tok
7. us-east
8. us-south
9. br-sao
10. staging (us-south)
Enter a number:
5
OK

예제 2

지역을 명시적으로 설정합니다.

# set the region endpoint to "us-south"
$ ibmcloud kp region-set us-south

OK

REGION은 올바른 지역 엔드포인트여야 합니다.

# this should fail (not a valid regional endpoint)
$ ibmcloud kp region-set not-a-region

FAILED

예제 3

지역 엔드포인트를 설정 해제(제거)합니다.

# remove the regional endpoint
$ ibmcloud kp region-set -u

OK

필수 매개변수

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • REGION

    지역 엔드포인트를 지정합니다. 이 매개변수는 선택사항이며 지정되지 않으면 목록에서 지역 엔드포인트를 선택하라는 프롬프트가 표시됩니다.

  • -u, --unset

    지역 엔드포인트를 설정 해제(제거)합니다.

kp registrations

등록은 루트 키와 기타 클라우드 리소스(예: COS(Cloud Object Storage) 버킷 또는 클라우드 데이터베이스 배치) 간의 연관입니다.

예를 들어, Key Protect에서는 COS에서 저장 중인 데이터를 보호하는 데 사용되는 루트 키를 작성합니다.

다른 클라우드 리소스와 Key Protect 간의 관계를 registration(이)라고 합니다.

루트 키에 의존하는 COS 버킷 및 오브젝트와 같은 리소스가 있는 경우 루트 키를 삭제하지 마십시오. 루트 키를 삭제하면 해당 리소스를 복구할 수 없습니다. 이는 "암호 폐기"라고 하며 조치는 복구할 수 없습니다.

ibmcloud kp registrations
        -i, --instance-id INSTANCE_ID
    [-r, --key-ring    KEY_RING_ID]
    [-c, --crn-query   CRN_PATTERN]
    [-k, --key-id      KEY_ID_OR_ALIAS]
    [-o, --output      OUTPUT]

예제

다음은 kp registrations의 예제입니다.

등록 예제에는 많은 클라우드 리소스 이름(CRN)이 표시됩니다. CRN은 다음 형식을 따릅니다.

crn:version:cname:ctype:service-name:location:scope:service-instance:resource-type:resource

참조 클라우드 리소스 이름 을 참조하여 CRN 필드에 대한 자세한 설명을 확인하세요.

예제 1

데이터베이스, 스토리지, 컴퓨팅, 컨테이너 또는 메시징과 같은 클라우드 리소스를 포함할 수 있는 모든 등록을 나열합니다.

이 예제는 COS(Cloud Object Storage)와 아래 서비스 간의 관계를 보여줍니다. Key Protect.

# view all registrations
$ ibmcloud kp registrations --output json

[
  {
    "keyId": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
    "resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:bucket:my-cos-kms-bucket",
    "createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::",
    "creationDate": "2020-06-15T16:07:37Z",
    "lastUpdated": "2020-06-15T16:07:37Z",
    "keyVersion": { "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f", "creationDate": "2020-06-15T16:05:53Z"
    }
  }
]

예제 2

이 예제는 두 개의 클라우드 리소스(Cloud ObjectStorage 및 Key Protect)의 전체 라이프사이클을 보여줍니다. (Key Protect 인스턴스 작성 및 인스턴스 간 정책 작성에서 해당 인스턴스 삭제까지).

단계의 요약은 다음과 같습니다.

단계 여기서, 설명
1 CLI COS(Cloud Object Storage) 및 KP(Key Protect) 인스턴스 작성
2 CLI COS가 KP 암호화 키에 액세스하기 위한 정책 작성
3 CLI COS가 데이터를 암호화하는 데 사용하는 KP 루트 키 작성
4 콘솔 UI COS 버킷을 작성하고 KP 암호화 지정. 현재 API 또는 CLI 지원이 없으므로 이 작업은 콘솔 사용자 인터페이스(UI)에서 수행됩니다.
5 CLI KP 등록 보기
6 CLI COS 및 KP가 함께 작동하는지 확인하기 위해 오브젝트 업로드 및 다운로드
7 CLI COS 버킷 및 KP 루트 키 삭제
8 CLI COS와 KP 간의 권한 부여 정책 삭제
9 CLI COS 및 KP 인스턴스 삭제

이 명령은 COS 및 Key Protect 서비스 계획을 표시합니다. ibmcloud resource service-instance-create 명령에는 service plan namelocation이 필요하며, 이는 카탈로그에 있습니다.

# show the catalog offerings for cloud object storage (COS) and Key Protect
$ ibmcloud catalog service cloud-object-storage

$ ibmcloud catalog service kms

이 예는 여러 단계를 다루며 제공된 요약을 참고하여 수행해야 합니다.

# create a Cloud Object Storage (COS) instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1

$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global

Creating service instance my-cos-1 in resource group Default of account <account name> as <email address>...
OK
Service instance my-cos-1 was created.
Name:             my-cos-1
ID:               crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::
GUID:             4b636e74-f3ca-40bb-80b8-3bd21801ccb8
Location:         global
State:            active
Type:             service_instance
Sub Type:
Allow Cleanup:    false
Locked:           false
Created at:       2020-06-15T16:03:39Z
Updated at:       2020-06-15T16:03:39Z
Last Operation:             Status    create succeeded             Message   Completed create instance operation

# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=4b636e74-f3ca-40bb-80b8-3bd21801ccb8

# create a Key Management Service (KMS) service instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1

$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south

Creating service instance my-kms-1 in resource group Default of account <account name> as <email address>...
OK
Service instance my-kms-1 was created.
Name:             my-kms-1
ID:               crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a::
GUID:             b3933ab0-d579-46fc-8ed5-351aea657b9a
Location:         us-south
State:            active
Type:             service_instance
Sub Type:         kms
Allow Cleanup:    false
Locked:           false
Created at:       2020-06-15T16:04:40Z
Updated at:       2020-06-15T16:04:40Z
Last Operation:             Status    create succeeded             Message   Completed create instance operation

# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=b3933ab0-d579-46fc-8ed5-351aea657b9a

# create a policy for COS to read KMS; source is COS, target is KMS
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
  --source-service-instance-id $COS_INSTANCE_ID \
  --target-service-instance-id $KP_INSTANCE_ID

Creating authorization policy under account ea998d3389c3473aa0987652b46fb146 as <email address>...
OK
Authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 was created.
ID:                        18cfc980-4458-4313-972e-93f312cdcd81
Source service name:       cloud-object-storage
Source service instance:   4b636e74-f3ca-40bb-80b8-3bd21801ccb8
Target service name:       kms
Target service instance:   b3933ab0-d579-46fc-8ed5-351aea657b9a
Roles:                     Reader

# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=18cfc980-4458-4313-972e-93f312cdcd81

# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json

{
  "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
  "name": "my-cos-key",
  "type": "application/vnd.ibm.kms.key+json",
  "extractable": false,
  "state": 1,
  "crn": "crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a:key:2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f"
}

# capture the KP root key id
$ MY_COS_KEY_ID=2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f

# create a COS bucket and set KP encryption
#   must be done in the console user interface (UI) because
#   there is no API or CLI support at this time
# 1 - In the UI, go to... Resource list -> Storage -> my-cos-1
# 2 - Create bucket -> custom bucket
# 3 - Properties of a custom bucket
#   a - bucket name: my-cos-kms-bucket
#   b - location: us-south (same region as KP)
#   c - checkbox: Key Protect
#   d - instance: my-kms-1
#   e - key name: my-cos-key
#   f - button: Create bucket

# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket

# view the KP registration; it's a result of creating the COS bucket
$ ibmcloud kp registrations --output json

[
  {
    "keyId": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f",
    "resourceCrn": "crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:bucket:my-cos-kms-bucket",
    "createdBy": "crn-crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8::",
    "creationDate": "2020-06-15T16:07:37Z",
    "lastUpdated": "2020-06-15T16:07:37Z",
    "keyVersion": { "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f", "creationDate": "2020-06-15T16:05:53Z"
    }
  }
]

# list the bucket
$ ibmcloud cos list-buckets --ibm-service-instance-id $COS_INSTANCE_ID

OK
1 bucket found in your account:
Name                Date Created
my-cos-kms-bucket   Jun 15, 2020 at 16:07:38

# upload an object to COS
$ ibmcloud cos put-object --bucket $COS_BUCKET --key '/cos-file.txt' --body cos-file-upload.txt

OK
Successfully uploaded object '/cos-file.txt' to bucket 'my-cos-kms-bucket'.

# get the object from COS
$ ibmcloud cos get-object --bucket $COS_BUCKET --key '/cos-file.txt' cos-file-download.txt

OK
Successfully downloaded '/cos-file.txt' from bucket 'my-cos-kms-bucket'
20 B downloaded.

# verify that the upload and download files are the same
$ cat cos-file-upload.txt

This is a test file

$ cat cos-file-download.txt

This is a test file

# delete the object
$ ibmcloud cos delete-object --bucket $COS_BUCKET --key '/cos-file.txt' --force

OK
Delete '/cos-file.txt' from bucket 'my-cos-kms-bucket' ran successfully.

# delete the bucket
$ ibmcloud cos delete-bucket --bucket $COS_BUCKET --force

OK
Successfully deleted bucket 'my-cos-kms-bucket'. The bucket 'my-cos-kms-bucket' will be available for reuse after 15 minutes.

# list the bucket (it should no longer exist)
$ ibmcloud cos list-buckets --ibm-service-instance-id $COS_INSTANCE_ID

OK
No buckets found in your account.

# view the KP registration (it should no longer exist)
$ ibmcloud kp registrations --output json

# delete the KP root key; COS no longer uses it
$ ibmcloud kp key delete $MY_COS_KEY_ID --output json

{
  "id": "2cbea94c-6070-4a24-b0f8-7a56e4d7cb6f"
}

# delete the authorization policy between COS AND KMS
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force

Deleting authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 under account ea998d3389c3473aa0987652b46fb146...
OK
Authorization policy 18cfc980-4458-4313-972e-93f312cdcd81 is deleted successfully

# view the authorization policy (it should no longer exist)
$ ibmcloud iam authorization-policies

Getting authorization policies under account ea998d3389c3473aa0987652b46fb146 as <email address>...
OK
No policy found

# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force

Deleting service instance my-kms-1 in resource group Default under account <account name> as <email address>...
OK
Service instance my-kms-1 with ID crn:v1:bluemix:public:kms:us-south:a/ea998d3389c3473aa0987652b46fb146:b3933ab0-d579-46fc-8ed5-351aea657b9a:: is deleted successfully

# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force

Deleting service instance my-cos-1 in resource group Default under account <account name> as <email address>...
OK
Service instance my-cos-1 with ID crn:v1:bluemix:public:cloud-object-storage:global:a/ea998d3389c3473aa0987652b46fb146:4b636e74-f3ca-40bb-80b8-3bd21801ccb8:: is deleted successfully

# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances

Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.

예제 3

이 예제는 COS 및 Key Protect(KP) 간에 다음 중 하나가 발생하는 경우 일어나는 사항을 보여줍니다. COS는 Key Protect 루트 키에 액세스할 수 없습니다.

  • KP 루트 키 삭제
  • CMS/KP 권한 정책 제거

이 예제는 관련이 있는 경우를 제외하고 명령 출력을 표시하지 않습니다.

# create a Cloud Object Storage (COS) service instance
# "lite" is the pricing plan and "global" is the region
$ COS_NAME=my-cos-1

$ ibmcloud resource service-instance-create $COS_NAME cloud-object-storage lite global

# capture the COS instance id (GUID)
$ COS_INSTANCE_ID=c488e11a-c8a0-4688-b002-9327266ea55f

# create a Key Management Service (KMS) service instance
# "tiered-pricing" is the pricing plan and "us-south" is the region
$ KMS_NAME=my-kms-1

$ ibmcloud resource service-instance-create $KMS_NAME kms tiered-pricing us-south

# capture the Key Protect (KP) instance id (GUID)
$ KP_INSTANCE_ID=26f4b198-952a-47ab-9f44-ef69c038b3c5

# create a policy for COS to read KMS; source is COS, target is KMS (Key Protect)
$ ibmcloud iam authorization-policy-create cloud-object-storage kms Reader \
  --source-service-instance-id $COS_INSTANCE_ID \
  --target-service-instance-id $KP_INSTANCE_ID

# capture the COS-to-KMS authorization policy id
$ COS_KMS_AUTHORIZATION=594b946e-0e90-44ea-ac62-6cbb42450cd5

# create a KP root key that COS uses to encrypt data
$ ibmcloud kp key create my-cos-key --output json

# capture the KP root key id
$ MY_COS_KEY_ID=464d78c3-57dc-49a5-b932-8ebf8f8c7771

# create a COS bucket and set KP encryption
#   must be done in the console user interface (UI) because
#   there is no API or CLI support at this time

# capture the name of the COS bucket that was created
$ COS_BUCKET=my-cos-kms-bucket

# upload an object to COS
$ ibmcloud cos put-object --bucket $COS_BUCKET --key '/cos-file.txt' --body cos-file-upload.txt

# delete the authorization policy between COS AND KMS - this breaks everything
$ ibmcloud iam authorization-policy-delete $COS_KMS_AUTHORIZATION --force

# get the object from COS - this fails because COS no longer has access to KMS
$ ibmcloud cos get-object --bucket $COS_BUCKET --key '/cos-file.txt' cos-file-download.txt

FAILED
ServiceNotAuthorized: The specified COS Service Instance does not have sufficient
    permissions to access the resource provided in the ibm-sse-kp-customer-root-key-crn request header
status code: 401,
request id: a51e1da3-9bf7-4cc9-9eb0-0d074c7f9093,
host id:

# delete the object
$ ibmcloud cos delete-object --bucket $COS_BUCKET --key '/cos-file.txt' --force

# delete the bucket
$ ibmcloud cos delete-bucket --bucket $COS_BUCKET --force

# delete the KP root key - this fails because the registration was not deleted
$ ibmcloud kp key delete $MY_COS_KEY_ID --output json

FAILED
kp.Error:
    correlation_id='fffdd8a9-405a-4a91-a5a7-52c30d11424d',
    msg='Conflict: Key could not be deleted. Please see "reasons" for more details.',
    reasons='[PROTECTED_RESOURCE_ERR: Key is protecting one or more cloud resources -
        FOR_MORE_INFO_REFER: https://cloud.ibm.com/docs/key-protect?topic=key-protect-troubleshooting#unable-to-delete-keys]'

# delete the KP root key; use --force because the registration between COS and KMS still exists
$ ibmcloud kp key delete $MY_COS_KEY_ID --force --output json

# delete the KMS instance
$ ibmcloud resource service-instance-delete $KMS_NAME --force

# delete the COS instance
$ ibmcloud resource service-instance-delete $COS_NAME --force

# view resources (COS and KMS should no longer exist)
$ ibmcloud resource service-instances

Retrieving instances with type service_instance in resource group Default in all locations under account <account name> as <email address>...
OK
No service instance found.

필수 매개변수

  • KEY_ID_OR_ALIAS

    쿼리하려는 키의 v4 UUID 또는 별칭입니다.

  • -i, --instance-id

    IBM Cloud 인스턴스를 식별하는 Key Protect 인스턴스 ID입니다.

    $ export KP_INSTANCE_ID=<INSTANCE_ID> 명령으로 -i을(를) 지정하는 대신 환경 변수를 설정할 수 있습니다.

선택적 매개변수

  • -c, --crn-query

    등록이 나열되어야 하는 crn 조회를 지정합니다.

  • -k, --key-id

    등록이 나열되어야 하는 키 ID를 지정합니다.

  • -o, --output

    CLI 출력 형식을 설정하십시오. 기본적으로 모든 명령은 표 형식으로 인쇄됩니다. 출력 형식을 JSON으로 변경하려면 --output json을 사용하십시오.

    출력을 JSON으로 설정하면(--output json) 클라우드 리소스 이름(CRN)이 출력에 포함됩니다.

  • -r, --key-ring

    키 링의 사용자가 읽을 수 있는 고유한 이름입니다. 제공된 키 링에 대한 등록을 표시하는 데 필요합니다.

ibmcloud kp kmip kmip 명령

KMIP 명령은 KMIP 어댑터 및 오브젝트에 대한 API 액세스를 허용합니다.

하위 명령 상태 v0.10 설명
어댑터-작성 KMIP 어댑터 작성
어댑터 KMIP 어댑터 검색
어댑터 인스턴스의 KMIP 어댑터 나열
어댑터-삭제 KMIP 어댑터 삭제
cert-create 어댑터와 연관된 KMIP 클라이언트 인증서 작성
인증서 KMIP 클라이언트 인증서 검색
인증서 KMIP 어댑터와 연관된 KMIP 클라이언트 인증서 나열
cert-delete KMIP 클라이언트 인증서 삭제
오브젝트 KMIP 오브젝트 검색
오브젝트 KMIP 어댑터의 KMIP 오브젝트 나열
오브젝트-삭제 KMIP 오브젝트 삭제

kp kmip 어댑터-작성

kmip adapter-create 를 사용하여 Key Protect 인스턴스 아래에 KMIP 어댑터를 작성하십시오. 어댑터는 KMIP 오브젝트를 그룹화하고 관리하는 데 사용됩니다. 어댑터는 이름 또는 ID로 검색할 수 있으므로 동일한 Key Protect 인스턴스 아래의 KMIP 어댑터에는 고유한 이름이 있어야 합니다. 모든 KMIP 관련 CLI 명령의 경우 어댑터 ID를 사용하는 인수 또는 플래그도 어댑터 이름을 사용할 수 있습니다.

프로파일에 따라 어댑터를 작성하기 위해 다른 정보를 제공해야 할 수도 있습니다. 현재 KMIP 어댑터의 한 프로파일 ( native_1.0) 만 지원됩니다.

native_1.0 프로파일에는 -k 플래그에서 제공할 루트 키의 ID만 필요합니다.

$ ibmcloud kp kmip adapter-create
    -i, --instance-id      INSTANCE_ID
    -p, --profile PROFILE
    [-k, --crk-id CRK_ID]
    [-n, --name NAME]
    [-d, --description DESC]
    [-o, --output          OUTPUT]

다음은 kp kmip adapter-create의 예제입니다.

예제 1

이 예제는 native_1.0 프로파일을 사용하여 KMIP 어댑터를 작성합니다.

$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0 -d "my description"
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID                             Adapter Profile   Adapter Name   Adapter Description   
d6a00af1-277f-40e8-b33e-da3a68752209   native_1.0        myadapter      my description  
$ ibmcloud kp kmip adapters
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Adapters...
OK
Adapter ID                             Adapter Profile   Adapter Name   Created At                      Updated At   
d6a00af1-277f-40e8-b33e-da3a68752209   native_1.0        myadapter      2024-03-20 22:06:43 +0000 UTC   2024-03-20 22:06:43 +0000 UTC   

kp kmip 어댑터

작성 및 업데이트 날짜를 포함하여 KMIP 어댑터에 대한 세부사항을 검색합니다. 어댑터 ID 또는 어댑터 이름을 사용할 수 있습니다.

$ ibmcloud kp kmip adapter ADAPTER_NAME_OR_ID
    -i, --instance-id   INSTANCE_ID
    [-o, --output       OUTPUT]

다음은 kp kmip adapter의 예제입니다.

예제 1

어댑터에 대한 일부 속성은 JSON 출력 형식으로만 표시됩니다.

$ ibmcloud kp key create rootKmip
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating key: 'rootKmip', in instance: '8944cc2d-7e00-46b2-baa4-787051e0f7b3'...
OK
Key ID                                 Key Name   
47a0ad90-204d-4e45-aa5b-68ed40a05fa2   rootKmip   
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID                             Adapter Profile   Adapter Name   Adapter Description   
d6a00af1-277f-40e8-b33e-da3a68752209   native_1.0        myadapter      -   
# retreiving adapter by name
$ ibmcloud kp kmip adapter myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Getting KMIP Adapter...
OK
Adapter ID                             Adapter Profile   Adapter Name   Created At                      Updated At                      Adapter Description   
d6a00af1-277f-40e8-b33e-da3a68752209   native_1.0        myadapter      2024-03-20 22:06:43 +0000 UTC   2024-03-20 22:06:43 +0000 UTC   -   
# retrieving adapter by ID
$ ibmcloud kp kmip adapter d6a00af1-277f-40e8-b33e-da3a68752209 -o json
{
    "id": "d6a00af1-277f-40e8-b33e-da3a68752209",
    "profile": "native_1.0",
    "profile_data": {
        "crk_id": "47a0ad90-204d-4e45-aa5b-68ed40a05fa2"
    },
    "name": "myadapter",
    "description": "",
    "created_by": "IBMid-664003LB2T",
    "created_at": "2024-03-20T22:06:43Z",
    "updated_by": "IBMid-664003LB2T",
    "updated_at": "2024-03-20T22:06:43Z"
}

kp kmip 어댑터

Key Protect 인스턴스에서 사용 가능한 KMIP 어댑터를 나열하십시오.

$ ibmcloud kp kmip adapters
    -i, --instance-id       INSTANCE_ID
    [-o, --output           OUTPUT]
    [-n, --limit            LIMIT]
    [-s, --starting-offset  OFFSET]
    [-t, --total-count]
    [-k, --crk-id           CRK_ID]

다음은 kp kmip adapters의 예제입니다. 특정 CRK ID를 사용하는 어댑터만 표시하려면 -k 플래그를 사용하십시오.

예제 1

$ ibmcloud kp kmip adapters -n 100 -s 0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Adapters...
OK
Adapter ID                             Adapter Profile   Adapter Name   Created At                      Updated At   
d6a00af1-277f-40e8-b33e-da3a68752209   native_1.0        myadapter      2024-03-20 22:06:43 +0000 UTC   2024-03-20 22:06:43 +0000 UTC

kp kmip 어댑터-삭제

KMIP 어댑터를 삭제합니다. 그러면 어댑터와 연관된 모든 오브젝트 및 인증서가 삭제됩니다.

$ ibmcloud kp kmip adapter-delete ADAPTER_NAME_OR_ID
    -i, --instance-id INSTANCE_ID
    [-f, --force]
    [-y, --skip-confirm]

다음은 kp kmip adapter-delete의 예제입니다.

예제 1

$ ibmcloud kp kmip adapter-create -n adap -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID                             Adapter Profile   Adapter Name   Adapter Description   
e97e4297-4a6f-41c9-ae67-0920715964fd   native_1.0        adap           -   
$ ibmcloud kp kmip adapter-delete e97e4297-4a6f-41c9-ae67-0920715964fd
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Adapter...
OK

kp kmip cert-작성

kp kmip cert-create 를 사용하여 특정 KMIP 어댑터에 연관시킬 KMIP 클라이언트 인증서를 작성하십시오. -c 플래그에서 제공되는 인증서는 x509 PEM 형식이어야 합니다. 인증서 파일은 @ 접두부를 사용하여 파일 경로를 지정하거나 인증서 파일의 컨텐츠를 플래그에 직접 제공하여 업로드할 수 있습니다.

KMIP 클라이언트 인증서는 상호 TLS (mTLS) 를 통해 KMIP 서버에 연결하고 인증하는 데 사용됩니다. KMIP 어댑터를 사용하여 KMIP 프로토콜 조작을 수행하려면 먼저 인증서를 등록해야 합니다. KMIP 조작에서 인증서를 사용하는 데 최대 5분이 걸릴 수 있습니다.

인증서에는 동일한 KMIP 어댑터 내에서 고유한 이름이 있어야 하며 인증서의 컨텐츠는 여러 어댑터 사이에서도 고유해야 합니다.

KMIP 프로토콜 스펙 도 참조하십시오.

$ ibmcloud kp kmip cert-create
    -a, --adapter       ADAPTER_NAME_OR_ID
    -c, --cert-string   {@path/to/cert | CERTIFICATE_STRING}
    [-n, --name         NAME]
    -i, --instance-id   INSTANCE_ID
    [-o, --output       OUTPUT]

다음은 kp kmip cert-create의 예제입니다.

예제 1

이 예제는 동일한 인증서 파일을 업로드하는 두 가지 방법을 보여줍니다.

$ ibmcloud kp key create rootKmip
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating key: 'rootKmip', in instance: '8944cc2d-7e00-46b2-baa4-787051e0f7b3'...
OK
Key ID                                 Key Name   
47a0ad90-204d-4e45-aa5b-68ed40a05fa2   rootKmip   
$ ibmcloud kp kmip adapter-create -n myadapter -k 47a0ad90-204d-4e45-aa5b-68ed40a05fa2 -p native_1.0
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Adapter...
OK
Adapter ID                             Adapter Profile   Adapter Name   Adapter Description   
d6a00af1-277f-40e8-b33e-da3a68752209   native_1.0        myadapter      -   

$ export CERT=$(cat ./cert.pem)

$ ibmcloud kp kmip cert-create -n mycert -c "$CERT" -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Client Certificate...
OK
Certificate ID                         Certificate Name   Created At   
3f550b96-86bc-44fe-8d1d-113e57067219   mycert             2024-03-20 22:08:03 +0000 UTC   

## Alternatively, you can also provide the filepath of the certificate

$ ibmcloud kp kmip cert-delete mycert -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Client Certificate...
OK

$ ibmcloud kp kmip cert-create -n mycert -c @./cert.pem -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Creating KMIP Client Certificate...
OK
Certificate ID                         Certificate Name   Created At   
a279fded-06d1-45a1-8a95-901f194fb937   mycert             2024-03-20 22:11:34 +0000 UTC   

kp kmip 인증서

특정 KMIP 클라이언트 인증서를 검색합니다. ID 또는 이름으로 인증서를 검색할 수 있습니다.

$ ibmcloud kp kmip cert CERTIFICATE_ID
    -a, --adapter       ADAPTER_NAME_OR_ID
    -i, --instance-id   INSTANCE_ID
    [-o, --output       OUTPUT]

예제

다음은 kp kmip cert의 예제입니다.

예제 1

이름별 인증서 가져오기:

$ ibmcloud kp kmip cert mycert -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Getting KMIP Client Certificate...
OK
Certificate ID                         Certificate Name   Created At   
a279fded-06d1-45a1-8a95-901f194fb937   mycert             2024-03-20 22:11:34 +0000 UTC   

예제 2

JSON 형식의 UUID를 사용하여 인증서를 가져오는 중입니다. 인증서의 PEM 형식 컨텐츠가 JSON 본문에 리턴됩니다.

$ ibmcloud kp kmip cert a279fded-06d1-45a1-8a95-901f194fb937  -a myadapter -o json
{
    "id": "a279fded-06d1-45a1-8a95-901f194fb937",
    "name": "mycert",
    "certificate": "-----BEGIN CERTIFICATE-----\nMIIFqzCCA5OgAwIBAgIUNXqfJMkAHOBHz6+ekETDlCqIEqUwDQYJKoZIhvcNAQEL\nBQAw
    ... CERTIFICATE CONTENTS ABBREVIATED ...
    Y6uFtHuQSpud0C\n-----END CERTIFICATE-----\n",
    "created_by": "IBMid-12345678",
    "created_at": "2024-03-20T22:11:34Z"
}

kp kmip 인증서

특정 KMIP 어댑터와 연관된 모든 KMIP 클라이언트 인증서를 나열합니다.

$ ibmcloud kp kmip certs
    -a, --adapter           ADAPTER_NAME_OR_ID
    [-n, --limit            LIMIT]
    [-s, --starting-offset  OFFSET]
    [-t, --total-count]
    -i, --instance-id       INSTANCE_ID
    [-o, --output           OUTPUT]

예제

다음은 kp kmip certs의 예제입니다.

예제 1

$ ibmcloud kp kmip certs -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Client Certificates...
OK
Certificate ID                         Certificate Name   Created At   
a279fded-06d1-45a1-8a95-901f194fb937   mycert             2024-03-20 22:11:34 +0000 UTC   

kp kmip cert-delete

KMIP 클라이언트 인증서를 삭제하십시오.

$ ibmcloud kp kmip cert-delete CERTIFICATE_ID
    -a, --adapter         ADAPTER_NAME_OR_ID
    -i, --instance-id     INSTANCE_ID

예제

다음은 kp kmip cert-delete 의 예제입니다.

예제 1

$ ibmcloud kp kmip cert-delete -a myadapter mycert
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Client Certificate...
OK

kp kmip 오브젝트

KMIP 오브젝트는 KMIP 프로토콜을 사용하여 KMIP 클라이언트를 통해 수행되는 조작을 통해 작성됩니다. API를 통해 작성할 수 없지만 읽고 삭제할 수 있습니다. 오브젝트는 단일 어댑터에 속합니다.

오브젝트에는 이름이 없으며 ID로 검색해야 합니다.

$ ibmcloud kp kmip object OBJECT_ID
    -a, --adapter         ADAPTER_NAME_OR_ID
    -i, --instance-id     INSTANCE_ID
    [-o, --output         OUTPUT]

예제

다음은 kp kmip object 의 예제입니다.

예제 1

$ ibmcloud kp kmip object 12365a82-5404-4bd9-a4c7-2b628ee18304 -a testadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Getting KMIP Object...
OK
Object ID                              Object Type     Object State   Created At                      Updated At   
12365a82-5404-4bd9-a4c7-2b628ee18304   Symmetric Key   Active         2024-03-14 21:01:45 +0000 UTC   2024-03-14 21:01:45 +0000 UTC   

예제 2

KMIP 오브젝트를 JSON으로 가져오면 일반 테이블 보기에 표시되지 않는 일부 추가 속성이 표시됩니다.

$ ibmcloud kp kmip object 12365a82-5404-4bd9-a4c7-2b628ee18304 -a testadapter -o json
{
    "id": "12365a82-5404-4bd9-a4c7-2b628ee18304",
    "kmip_object_type": 2,
    "state": 2,
    "created_by_kmip_client_cert_id": "531c18f3-4e37-447e-a7e0-e8676407bb75",
    "created_by": "IBMid-123456",
    "created_at": "2024-03-14T21:01:45Z",
    "updated_by_kmip_client_cert_id": "531c18f3-4e37-447e-a7e0-e8676407bb75",
    "updated_by": "IBMid-123456",
    "updated_at": "2024-03-14T21:01:45Z"
}

kp kmip 오브젝트

KMIP 오브젝트를 나열하고 다른 메타데이터 사이에서 오브젝트 유형 및 오브젝트 상태에 대한 정보를 봅니다. 특정 상태의 오브젝트만 필터링하려면 -f 플래그를 사용하십시오. 기본적으로 상태 필터는 1,2,3,4 로 설정됩니다.

번호는 다음과 같이 오브젝트 상태에 해당합니다.

  • 사전 활성 = 1
  • 활성 = 2
  • 비활성화 = 3
  • 손상됨 = 4
  • 영구 삭제됨 = 5
  • 손상된 상태로 영구 삭제됨 = 6

KMIP 상태 열거 를 참조하십시오.

ibmcloud kp kmip objects
    -a, --adapter           ADAPTER_NAME_OR_ID
    [-n, --limit            LIMIT]
    [-s, --starting-offset  OFFSET]
    [-t, --total-count]
    -i, --instance-id       INSTANCE_ID
    [-o, --output           OUTPUT]

예제

다음은 kp kmip objects의 예제입니다.

예제 1

$ ibmcloud kp kmip objects -a myadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Objects...
OK
Object ID                              Object Type     Object State   Created At                      Updated At   
00196c59-c5c2-42d8-9729-703cd0389f60   Symmetric Key   Compromised    2024-03-14 20:47:54 +0000 UTC   2024-03-14 20:47:54 +0000 UTC   
02f1043c-0494-4399-82af-5395a14b019f   Symmetric Key   Pre-Active     2024-03-14 20:58:06 +0000 UTC   2024-03-14 20:58:06 +0000 UTC   
08082ff4-821b-4689-83ec-15cac5bd1939   Symmetric Key   Pre-Active     2024-02-22 00:10:46 +0000 UTC   2024-02-22 00:11:23 +0000 UTC   
0c1ea28d-dfaa-404a-b9c4-fcdc3f5d8b02   Symmetric Key   Deactivated    2024-03-14 21:05:48 +0000 UTC   2024-03-14 21:05:48 +0000 UTC   
10b49b05-0101-4234-927b-20a3356da291   Symmetric Key   Pre-Active     2024-03-14 21:26:54 +0000 UTC   2024-03-14 21:26:54 +0000 UTC   
12365a82-5404-4bd9-a4c7-2b628ee18304   Symmetric Key   Active         2024-03-14 21:01:45 +0000 UTC   2024-03-14 21:01:45 +0000 UTC

예제 2

-f 플래그를 사용하여 특정 상태의 오브젝트를 필터링합니다. 여러 상태를 지정하려면 쉼표를 사용하십시오.

$ ibmcloud kp kmip objects -a testadapter -f 5,6
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Listing KMIP Objects...
OK
Object ID                              Object Type     Object State            Created At                      Updated At   
03d38805-2bb2-4aa0-bbf3-dc4a6d5d0475   Symmetric Key   Destroyed               2024-03-14 20:47:58 +0000 UTC   2024-03-14 20:47:58 +0000 UTC   
08c94f34-0100-4331-b759-5937ed5b1228   Symmetric Key   Destroyed               2024-03-14 20:46:38 +0000 UTC   2024-03-14 20:46:38 +0000 UTC   
1a13e112-41f8-4d52-be08-a0946b8c22fa   Symmetric Key   Destroyed Compromised   2024-03-14 20:58:20 +0000 UTC   2024-03-14 20:58:20 +0000 UTC   

kp kmip 오브젝트-삭제

KMIP 오브젝트를 삭제하십시오. 상태가 활성이 아니거나 영구 삭제되지 않은 오브젝트만 삭제할 수 있습니다.

$ ibmcloud kp kmip object-delete OBJECT_ID
    -a, --adapter ADAPTER_NAME_OR_ID
    -i, --instance-id INSTANCE_ID
    [-f, --force]
    [-y, --skip-confirm]

예제

다음은 kp kmip object-delete 의 예제입니다.

예제 1

$ ibmcloud kp kmip object-delete 9b2f5af5-3534-4f02-8836-f89af37c4351 -a testadapter
Targeting endpoint: https://qa.us-south.kms.test.cloud.ibm.com
Deleting KMIP Object...
OK

다음 단계

API 문서에서 관련 오퍼레이션을 찾으십시오.