주요 사용량 리포터(KUR) 도구 사용
키 사용량 리포터(KUR) CLI는 IBM Cloud 계정을 스캔하여 어떤 클라우드 리소스가 어떤 KMS 키로 암호화되어 있는지에 대한 종합적인 보고서를 생성합니다. 이 도구는 Key Protect (kms) 및 Hyper Protect Crypto Services (hs-crypto)을 모두 지원합니다. 또한 이 도구는 활동 추적 감사 로그 파일을 처리하여 KMS 활용도를 파악하는 데
도움이 되는 CSV 요약을 생성할 수 있습니다.
KUR은 있는 그대로 최선을 다해 제공됩니다. 이 도구는 가능한 모든 키 사용을 감지하지 못하며, 그 결과를 권위 있는 것으로 간주해서는 안 됩니다. 일부 서비스, 구성 또는 엣지 케이스는 적용되지 않을 수 있습니다.
도구 다운로드하기
-
Key Protect 에 IBM 지원 티켓 을 생성하여 Key Protect 마이그레이션 툴링에 대한 HPCS 액세스를 요청합니다.
-
지원 티켓에 제공된 도구 바이너리를 다운로드하세요.
-
다운로드한 바이너리의 SHA-256 체크섬이 지원 티켓에 제공된 값과 일치하는지 확인합니다. 값을 직접 비교하되 정확히 일치해야 합니다.
운영 체제에 적합한 명령을 실행하여 SHA-256 체크섬을 가져와 지원 티켓에 제공된 값과 비교합니다:
macOS:
shasum -a 256 <kur-binary>예:
shasum -a 256 kur-darwin-arm64-1.0.0Linux:
sha256sum <kur-binary>예:
sha256sum kur-linux-amd64-1.0.0Windows (명령 프롬프트):
certutil -hashfile <kur-binary> SHA256예:
certutil -hashfile kur-windows-amd64-1.0.0.exe SHA256Windows ( PowerShell ):
Get-FileHash <kur-binary> -Algorithm SHA256예:
Get-FileHash kur-windows-amd64-1.0.0.exe -Algorithm SHA256 -
바이너리 실행 파일( macOS/Linux )을 만듭니다:
chmod +x <kur-binary>
전제조건
도구를 실행하기 전에 다음 요구 사항이 충족되는지 확인하세요:
-
IBM Cloud CLI (
ibmcloud)는 IBM Cloud CLI 시작하기의 지침에 따라 설치합니다. -
다음 IBM Cloud CLI 플러그인이 설치되어 있고 최신 상태입니다:
container-servicevpc-infrastructureevent-notifications
누락된 플러그인이 있으면 설치하세요:
ibmcloud plugin install <plugin-name> -
IBM Cloud CLI에 로그인하여 스캔하려는 계정을 대상으로 지정합니다:
ibmcloud login -
IAM 토큰이 유효하며 유효 기간이 3분 이상 남아 있습니다. 확실하지 않은 경우 새로 고치세요:
ibmcloud login -
이 도구를 실행하는 사용자 계정에는 계정 전체에 대한 읽기 전용 액세스 권한이 필요합니다. 인증에 사용하는 신원(사용자 또는 API 키)에 계정 전체에 걸쳐 ‘Viewer’ 플랫폼 액세스 역할과 ‘Reader’ 서비스 액세스 역할을 할당하십시오.
이 읽기 전용, 감사자 방식의 접근 권한은 계정 감사에 사용되는 수준과 동일합니다. 이 문서는 해당 도구가 검사하는 모든 항목을 다루며, 여기에는 다음이 포함됩니다:
- Key Protect Hyper Protect Crypto Services 인스턴스 및 키
- 해당 키로 암호화할 수 있는 클라우드 서비스(예: Cloud Object Storage, VPC 인프라, Kubernetes 클러스터, Event Notifications, App Configuration )
KUR은 읽기 작업만 수행하며, 어떠한 리소스도 생성, 수정 또는 삭제하지 않습니다.
이 섹션의 액세스 요구 사항은 계정 스캔에 적용됩니다. process-at 하위 명령어는 전적으로 로컬 활동 추적 파일을 기반으로 작동하며, IBM Cloud 에 대한 액세스 권한이 필요하지 않습니다.
도구 실행
다음 예는 다양한 옵션과 구성으로 키 사용량 리포터 도구를 실행하는 방법을 보여줍니다.
기본 사용법: HPCS 키 검색(기본값)
다음 명령을 사용하여 현재 대상인 IBM Cloud 계정에서 모든 hs-crypto 인스턴스, 해당 키 및 해당 키로 암호화된 모든 클라우드 리소스를 검색합니다.
./<kur-binary>
Key Protect 키 스캔
HPCS 대신 Key Protect 인스턴스를 검색하려면 -service kms 플래그를 사용합니다.
./<kur-binary> --service kms
Key Protect 전용 인스턴스만 검색하세요
Key Protect 전용 인스턴스만 포함하도록 검색을 필터링할 수 있습니다.
./<kur-binary> --service kms --service-type dedicated
Key Protect 멀티 테넌트 인스턴스만 스캔합니다
Key Protect 표준(멀티테넌트) 인스턴스만 포함하도록 검색을 필터링할 수 있습니다.
./<kur-binary> --service kms --service-type multi-tenant
디버그 로깅 사용
자세한 디버그 출력을 활성화하여 문제를 해결하거나 도구의 동작을 이해할 수 있습니다.
./<kur-binary> --service kms --debug
사용자 지정 출력 파일 경로 지정
기본적으로 도구는 자동 생성된 이름으로 출력 파일을 생성하지만 사용자 지정 경로를 지정할 수 있습니다.
./<kur-binary> --service kms --output my-report.json
CLI 플래그
다음 표에는 키 사용량 리포터 도구에 사용할 수 있는 모든 명령줄 플래그가 나와 있습니다.
| 플래그 | 기본 | 설명 |
|---|---|---|
--service |
hs-crypto |
스캔할 KMS 서비스: hs-crypto 또는 kms |
--service-type |
(없음) | 유형별로 KMS 인스턴스 필터링: dedicated 또는 multi-tenant. -service kms 에서만 유효합니다. |
--skip-private-calls |
false |
비공개 엔드포인트에 대한 REST 호출 건너뛰기. 공용 엔드포인트가 없는 인스턴스는 건너뜁니다. |
--debug |
false |
디버그 모드 활성화: stderr에 상세 로그 메시지 표시 |
--output |
자동 이름 지정 | 출력 파일 경로. 기본값은 encryption-key-usage-report-<service>-<account-name>.json임 |
플래그는 단일 대시(-flag) 또는 이중 대시(--flag)를 사용할 수 있습니다.
출력 파일
이 도구는 두 개의 출력 파일을 생성합니다:
- JSON 보고서
- KMS 인스턴스, 키 및 리소스 사용량에 대한 전체 계층적 보고서를 포함하는 기본 출력 파일(예:
encryption-key-usage-report-kms-kp-stage.json)입니다. - 로그 파일
- 기본 이름이 같고
-log.txt접미사가 붙은 동반 로그 파일(예:encryption-key-usage-report-kms-kp-stage-log.txt)로, 실행의 모든 로그 메시지가 포함되어 있습니다.
출력 이해하기
JSON 보고서의 최상위 구조는 다음과 같습니다:
{
"metadata": { ... },
"result": {
"kms_instances": [ ... ],
"crns": [ ... ],
"unknowns": [ ... ]
}
}
메타데이터
메타데이터에는 도구 버전, 대상 KMS 서비스, IBM Cloud API 엔드포인트, 계정 이름, 계정 ID, 스캔을 실행한 사용자 등의 실행 컨텍스트가 포함됩니다.
KMS 인스턴스
계정에 있는 KMS 또는 HPCS 인스턴스당 하나의 항목이 있습니다. 키 사용이 감지된 인스턴스가 먼저 나열된 다음, 사용이 감지되지 않은 인스턴스가 나열됩니다. 각 인스턴스에는 다음이 포함됩니다:
- 인스턴스 메타데이터
- 이름, CRN, 상태, 허용된 네트워크, 공용 및 비공개 엔드포인트, 유형( Key Protect:
multi-tenant또는dedicated)의 경우 found_by_kms_instance_listingtrue인스턴스를 계정에 나열하여 찾은 경우.found_by_resource_scantrue리소스 스캔 중에 키가 있는 인스턴스가 감지된 경우.instance_stats- 상태별 키 수입니다:
active_crk_count,suspended_crk_count,deactivated_crk_count,destroyed_crk_countactive_standard_key_count,destroyed_standard_key_count.
keys[]- Key Protect API에서 전체 키 인벤토리를 확인하세요. 각 키에는 다음이 포함됩니다:
typecrk(고객 루트 키) 또는.standard_keystate_name:pre-activation,active,suspended,deactivated, 또는destroyed.name: 키 이름.id키 UUID.has_migration_intent키에 마이그레이션 인텐트가 설정되어 있는지 여부입니다.migration_intent_target_crk대상 CRK CRN(has_migration_intent이true일 때만 존재).found_by_kms_key_listing또는found_by_resource_scan: 키를 발견한 방법.associations[]키에 대해 등록된 클라우드 리소스( Key Protect 등록 API에서). 각 항목에는resource_crn및prevent_key_deletion활성화 여부가 표시됩니다. 키에 등록이 없는 경우 생략됩니다.service_usage계정 전체 리소스 검사에서 감지된 암호화된 리소스에 대한 서비스 이름의 맵입니다. 리소스 스캔으로 찾은 키에 대해서만 존재합니다.
CRN
CRN 패턴과 일치하지만 KMS 또는 HPCS 키 CRN이 아닌 암호화 식별자를 참조하는 리소스는 여기에서 캡처되어 자동으로 삭제되는 항목이 없도록 합니다.
알 수 없음
CRN으로 전혀 파싱할 수 없는 암호화 식별자를 참조하는 리소스가 여기에 나열되어 있습니다.
인스턴스 항목 예시
다음 예는 JSON 보고서에서 KMS 인스턴스 항목의 구조를 보여줍니다.
{
"name": "my-kp-instance",
"type": "multi-tenant",
"crn": "crn:v1:bluemix:public:kms:us-south:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab::",
"state": "active",
"allowed_network": "public-and-private",
"public_endpoint": "https://us-south.kms.cloud.ibm.com",
"private_endpoint": "https://private.us-south.kms.cloud.ibm.com",
"found_by_kms_instance_listing": true,
"found_by_resource_scan": true,
"instance_stats": {
"active_crk_count": 5,
"suspended_crk_count": 0,
"deactivated_crk_count": 1,
"destroyed_crk_count": 2,
"active_standard_key_count": 3,
"destroyed_standard_key_count": 1
},
"keys": [
{
"type": "crk",
"state_name": "active",
"name": "my-root-key",
"id": "abc12345-6789-0abc-def0-1234567890ab",
"has_migration_intent": false,
"found_by_kms_key_listing": true,
"found_by_resource_scan": true,
"associations": [
{
"resource_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab:bucket:my-encrypted-bucket",
"prevent_key_deletion": true
}
],
"service_usage": {
"cloud-object-storage (Cloud Object Storage)": [
{
"encrypted_resource": "crn:v1:bluemix:public:cloud-object-storage:global:a/00000000000000000000000000000000:deadbeef-0000-0000-0000-1234567890ab:bucket:my-encrypted-bucket"
}
]
}
},
{
"type": "standard_key",
"state_name": "active",
"name": "my-standard-key",
"id": "def45678-9012-3456-7890-abcdef012345",
"has_migration_intent": false,
"found_by_kms_key_listing": true,
"found_by_resource_scan": false
}
]
}
활동 추적 로그 처리
이 도구에는 기본 보고서를 생성하는 것 외에도 활동 추적 감사 로그를 처리하는 하위 명령이 포함되어 있습니다.
사용량
process-at 하위 명령을 사용하여 활동 추적 로그 파일을 처리합니다.
./<kur-binary> process-at <input.tsv>
수행하는 작업
IBM Cloud 활동 추적 이벤트 라우팅 아카이브 쿼리에서 내보낸 TSV 파일을 가져와 text 열에서 JSON 이벤트를 추출하고, KMS 및 HPCS 관련 이벤트(kms.* 및 hs-crypto.* 작업)에 대해 필터링합니다. 그런 다음 네 개의 출력 파일을 생성합니다:
<base>_events.json- 모든 이벤트가 형식이 지정된 JSON 배열로 추출됩니다.
<base>_events.csv- 플랫 CSV, 이벤트당 한 행, serviceName, 지역, accountId, instanceId, keyId, 액션, 결과, reasonType, reasonCode, initiatorId, initiatorName, authId, requestInstanceId, eventTime, correlationId, 상담원.
<base>_events_summary.csv- 서비스, 지역, 계정, 인스턴스, 키, 작업, 결과, 이유 및 시작자별로 그룹화된 이벤트 수와 함께 그룹화된 요약입니다.
<base>_events_summary_by_action.csv- 서비스, 지역, 계정, 인스턴스, 키, 작업 및 시작자별로 그룹화된 이벤트 수(결과 또는 이유 분석 없이)가 포함된 그룹 요약입니다.
여기서 <base> 은 입력 파일 이름에서 파생된 것입니다( _logs.tsv 또는 .tsv 제거 ).
예
다음 예는 활동 추적 로그 파일과 생성되는 출력 파일을 처리하는 방법을 보여줍니다.
./<kur-binary> process-at hpcs-at-data-1-day_logs.tsv
이 명령을 실행하면 다음과 같은 출력 파일이 생성됩니다:
hpcs-at-data-1-day_events.jsonhpcs-at-data-1-day_events.csvhpcs-at-data-1-day_events_summary.csvhpcs-at-data-1-day_events_summary_by_action.csv
이 기능은 KMS 주요 활동 패턴 분석, 주요 작업을 수행하는 서비스 및 사용자 식별, 마이그레이션 관련 이벤트 조사( ack-migrate) 등에 유용합니다.
문제점 해결
다음 정보는 키 사용량 리포터 도구를 실행할 때 흔히 발생하는 문제를 해결하는 데 도움이 됩니다.
IBM Cloud CLI가 설치되지 않았습니다
IBM Cloud CLI is not installed. Please install it first.
Visit: https://cloud.ibm.com/docs/cli?topic=cli-getting-started
IBM Cloud CLI 시작하기 문서에 따라 IBM Cloud CLI를 설치합니다.
누락된 CLI 플러그인
필요한 CLI 플러그인이 설치되어 있지 않으면 누락된 플러그인을 나열하는 오류 메시지가 표시됩니다.
missing required IBM Cloud CLI plugins: [container-service vpc-infrastructure]
누락된 플러그인을 설치합니다:
ibmcloud plugin install container-service
ibmcloud plugin install vpc-infrastructure
ibmcloud plugin install event-notifications
오래된 CLI 플러그인
CLI 플러그인이 오래된 경우 업데이트가 필요한 플러그인을 나열하는 경고 메시지가 표시됩니다.
the following IBM Cloud CLI plugins are outdated: [container-service]
플러그인을 업데이트합니다:
ibmcloud plugin update container-service
로그인되지 않았습니다.
IBM Cloud 에 로그인하지 않은 경우 도구에 오류 메시지가 표시됩니다.
not logged in to IBM Cloud. Please login first
IBM Cloud에 로그인하십시오.
ibmcloud login
토큰이 만료되었거나 곧 만료됩니다
이 도구를 사용하려면 유효 기간이 3분 이상 남은 유효한 IAM 토큰이 필요합니다.
IAM 토큰의 남은 유효 기간이 3분 미만인 경우 도구에서 토큰을 거부합니다. 세션을 새로 고칩니다:
ibmcloud login
비공개 전용 인스턴스
일부 KMS 인스턴스는 비공개 네트워크 액세스만 허용하도록 구성될 수 있습니다. KMS 인스턴스가 비공개 네트워크 액세스만 허용하고 IBM Cloud Private 네트워크에 연결되어 있지 않으면 도구에서 해당 인스턴스에 대한 통계나 키를 가져올 수 없습니다. 이러한 인스턴스에서 도구가 실패하는 대신 --skip-private-calls 을 사용하여 건너뛰세요:
./<kur-binary> --service kms --skip-private-calls
100개 이상의 KMS 인스턴스
IBM Cloud 리소스 목록 API는 반환할 수 있는 인스턴스 수에 제한이 있습니다.
[WARNING] 100 or more KMS instances, only the first 100 instances will be processed.
IBM Cloud 리소스 목록 API는 최대 100개의 인스턴스를 반환합니다. 계정에 100개 이상의 KMS 인스턴스가 있는 경우 처음 100개만 보고서에 포함됩니다. 이러한 현상은 알려진 제한 사항입니다.
Hs-crypto의 서비스 유형이 잘못되었습니다
--service-type 플래그는 Key Protect 인스턴스를 스캔할 때만 유효합니다.
error: --service-type can only be used with --service kms
--service-type 플래그( dedicated 또는 multi-tenant 로 필터링)는 Key Protect (--service kms)에만 적용됩니다. HPCS 인스턴스에는 적용되지 않습니다.