리소스: CryptoKey
CryptoKey
는 암호화 작업에 사용할 수 있는 논리적 키를 나타냅니다.
CryptoKey
는 암호화 작업에 사용되는 실제 키 자료를 나타내는 0개 이상의 versions
로 구성됩니다.
JSON 표현 |
---|
{ "name": string, "primary": { object ( |
필드 | |
---|---|
name |
출력 전용입니다. 이 |
primary |
출력 전용입니다. [EncryptRequest.name][]에 이
|
purpose |
변경할 수 없습니다. 이 |
createTime |
출력 전용입니다. 이 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
nextRotationTime |
[CreateCryptoKeyVersion][KeyManagementService.CreateCryptoKeyVersion] 및 [UpdateCryptoKeyPrimaryVersion][KeyManagementService.UpdateCryptoKeyPrimaryVersion]을 통해 수동으로 수행되는 키 순환은
RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
versionTemplate |
새 |
labels |
사용자 정의 메타데이터를 갖는 라벨입니다. 자세한 내용은 키 라벨 지정을 참조하세요. |
importOnly |
변경할 수 없습니다. 이 키에 가져온 버전만 포함될 수 있는지 여부입니다. |
destroyScheduledDuration |
변경할 수 없습니다. 이 키가 소수점 아래가 최대 9자리까지이고 ' |
cryptoKeyBackend |
변경할 수 없습니다. 이 |
통합 필드 rotation_schedule . 자동 순환 속도를 제어합니다. rotation_schedule 는 다음 중 하나여야 합니다. |
|
rotationPeriod |
서비스가 키를 자동으로 로테이션할 때
소수점 아래가 최대 9자리까지이고 ' |
CryptoKeyVersion
CryptoKeyVersion
은 개별 암호화 키 및 연결된 키 자료를 나타냅니다.
ENABLED
버전을 암호화 작업에 사용할 수 있습니다.
보안상의 이유로, CryptoKeyVersion
이 나타내는 원시 암호화 키 자료는 어떠한 경우에도 조회하거나 내보낼 수 없습니다. 승인된 사용자나 애플리케이션이 Cloud KMS를 호출할 때 데이터를 암호화, 복호화, 서명하는 데만 사용할 수 있습니다.
JSON 표현 |
---|
{ "name": string, "state": enum ( |
필드 | |
---|---|
name |
출력 전용입니다. 이 |
state |
|
protectionLevel |
출력 전용입니다. 이 |
algorithm |
출력 전용입니다. 이 |
attestation |
출력 전용입니다. 키 생성 시 HSM에서 생성하고 서명한 증명문입니다. 이 증명문을 사용하면 HSM에 저장된 키의 속성을 Google의 개입 없이 검증할 수 있습니다. |
createTime |
출력 전용입니다. 이 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
generateTime |
출력 전용입니다. 이 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
destroyTime |
출력 전용입니다. 이 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
destroyEventTime |
출력 전용입니다. 이 CryptoKeyVersion의 키 자료가 폐기된 시간입니다. RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
importJob |
출력 전용입니다. 이 |
importTime |
출력 전용입니다. 이 RFC3339 UTC 'Zulu' 형식의 타임스탬프입니다(나노초 단위, 소수점 이하 9자리). 예를 들면 |
importFailureReason |
출력 전용입니다. 최근 가져오기 실패의 근본 원인입니다. |
generationFailureReason |
출력 전용입니다. 최근 세대 오류의 근본 원인입니다. |
externalDestructionFailureReason |
출력 전용입니다. 최근 외부 폐기 실패의 근본 원인입니다. |
externalProtectionLevelOptions |
ExternalProtectionLevelOptions는 |
reimportEligible |
출력 전용입니다. [ImportCryptoKeyVersionRequest.crypto_key_version][]에서 대상으로 지정하여 이 키 버전을 다시 가져올 수 있는지 여부입니다. |
CryptoKeyVersionState
CryptoKeyVersion
의 사용 가능 여부를 나타내는 상태입니다.
열거형 | |
---|---|
CRYPTO_KEY_VERSION_STATE_UNSPECIFIED |
지정되지 않음 |
PENDING_GENERATION |
이 버전은 아직 생성되는 중입니다. 아직 사용, 사용 설정, 사용 중지, 폐기할 수 없습니다. 버전이 준비되는 즉시 Cloud KMS에서 자동으로 이 버전을 ENABLED 로 표시합니다. |
ENABLED |
이 버전을 암호화 작업에 사용할 수 있습니다. |
DISABLED |
이 버전은 사용할 수 없지만 키 자료는 여전히 사용할 수 있으며, 버전을 ENABLED 상태로 되돌릴 수 있습니다. |
DESTROYED |
이 버전은 폐기되었으며 키 자료가 더 이상 저장되지 않습니다. 이 버전은 이 버전이 reimportEligible 이고 [KeyManagementService.ImportCryptoKeyVersion][] 호출로 원래 키 자료를 다시 가져오는 경우에만 다시 ENABLED 상태가 될 수 있습니다. |
DESTROY_SCHEDULED |
이 버전은 폐기하도록 예약되었으며 곧 폐기될 예정입니다. [RestoreCryptoKeyVersion][KeyManagementService.RestoreCryptoKeyVersion]을 호출하여 DISABLED 상태로 되돌립니다. |
PENDING_IMPORT |
이 버전은 가져오는 중이며, 아직 사용, 사용 설정, 사용 중지, 폐기할 수 없습니다. 버전이 준비되는 즉시 Cloud KMS에서 자동으로 이 버전을 ENABLED 로 표시합니다. |
IMPORT_FAILED |
이 버전을 가져오지 못했습니다. 사용하거나, 사용 설정하거나, 사용 중지하거나, 폐기할 수 없습니다. 제출된 키 자료가 삭제되었습니다. 자세한 내용은 CryptoKeyVersion.import_failure_reason 에서 확인할 수 있습니다. |
GENERATION_FAILED |
이 버전이 생성되지 않았습니다. 사용하거나, 사용 설정하거나, 사용 중지하거나, 폐기할 수 없습니다. 자세한 내용은 CryptoKeyVersion.generation_failure_reason 에서 확인할 수 있습니다. |
PENDING_EXTERNAL_DESTRUCTION |
이 버전은 폐기되었으며 다시 사용하거나 사용 설정할 수 없습니다. Cloud KMS는 외부 키 관리자에 있는 해당 키 자료가 폐기될 때까지 기다립니다. |
EXTERNAL_DESTRUCTION_FAILED |
이 버전은 폐기되었으며 다시 사용하거나 사용 설정할 수 없습니다. 하지만 Cloud KMS에서는 외부 키 관리자에 있는 해당 키 자료가 폐기되었는지 확인할 수 없습니다. 자세한 내용은 CryptoKeyVersion.external_destruction_failure_reason 에서 확인할 수 있습니다. |
ProtectionLevel
ProtectionLevel
은 암호화 작업을 수행하는 방법을 지정합니다. 자세한 내용은 보호 수준을 참조하세요.
열거형 | |
---|---|
PROTECTION_LEVEL_UNSPECIFIED |
지정되지 않음 |
SOFTWARE |
암호화 작업이 소프트웨어에서 수행됩니다. |
HSM |
암호화 작업이 하드웨어 보안 모듈에서 수행됩니다. |
EXTERNAL |
암호화 작업은 외부 키 관리자에서 수행됩니다. |
EXTERNAL_VPC |
암호화 작업은 VPC를 통한 EKM 백엔드에서 수행됩니다. |
CryptoKeyVersionAlgorithm
각 암호화 작업에 어떤 매개변수가 사용되어야 하는지를 나타내는 CryptoKeyVersion
의 알고리즘입니다.
GOOGLE_SYMMETRIC_ENCRYPTION
알고리즘은 CryptoKey.purpose
ENCRYPT_DECRYPT
와 함께 사용할 수 있습니다.
'RSA_SIGN_'으로 시작하는 알고리즘은 CryptoKey.purpose
ASYMMETRIC_SIGN
과 함께 사용할 수 있습니다.
이름에서 'RSA_SIGN_' 뒤에 있는 필드는 패딩 알고리즘, 모듈러스 비트 길이, 다이제스트 알고리즘 등의 매개변수에 해당합니다.
PSS의 경우 사용되는 솔트 길이는 다이제스트 알고리즘의 길이와 동일합니다. 예를 들어 RSA_SIGN_PSS_2048_SHA256
은 솔트 길이가 256비트, 즉 32바이트인 PSS를 사용합니다.
'RSA_DECRYPT_'로 시작하는 알고리즘은 CryptoKey.purpose
ASYMMETRIC_DECRYPT
와 함께 사용할 수 있습니다.
이름에서 'RSA_DECRYPT_' 뒤에 있는 필드는 패딩 알고리즘, 모듈러스 비트 길이, 다이제스트 알고리즘 등의 매개변수에 해당합니다.
'EC_SIGN_'으로 시작하는 알고리즘은 CryptoKey.purpose
ASYMMETRIC_SIGN
과 함께 사용할 수 있습니다.
이름에서 'EC_SIGN_' 뒤에 있는 필드는 타원 곡선, 다이제스트 알고리즘 등의 매개변수에 해당합니다.
'HMAC_'로 시작하는 알고리즘은 CryptoKey.purpose
MAC
와 함께 사용할 수 있습니다.
'HMAC_' 다음의 서픽스는 사용 중인 해시 알고리즘에 해당합니다(예: SHA256).
자세한 내용은 키 용도 및 알고리즘을 참조하세요.
열거형 | |
---|---|
CRYPTO_KEY_VERSION_ALGORITHM_UNSPECIFIED |
지정되지 않음 |
GOOGLE_SYMMETRIC_ENCRYPTION |
대칭 암호화 키를 만듭니다. |
RSA_SIGN_PSS_2048_SHA256 |
SHA256 다이제스트가 있는 RSASSA-PSS 2048비트 키입니다. |
RSA_SIGN_PSS_3072_SHA256 |
SHA256 다이제스트가 있는 RSASSA-PSS 3072비트 키입니다. |
RSA_SIGN_PSS_4096_SHA256 |
SHA256 다이제스트가 있는 RSASSA-PSS 4096비트 키입니다. |
RSA_SIGN_PSS_4096_SHA512 |
SHA512 다이제스트가 있는 RSASSA-PSS 4096비트 키입니다. |
RSA_SIGN_PKCS1_2048_SHA256 |
2048비트 키와 SHA256 다이제스트 키가 있는 RSASSA-PKCS1-v1_5입니다. |
RSA_SIGN_PKCS1_3072_SHA256 |
3072비트 키와 SHA256 다이제스트 키가 있는 RSASSA-PKCS1-v1_5입니다. |
RSA_SIGN_PKCS1_4096_SHA256 |
4096비트 키와 SHA256 다이제스트 키가 있는 RSASSA-PKCS1-v1_5입니다. |
RSA_SIGN_PKCS1_4096_SHA512 |
4096비트 키와 SHA512 다이제스트 키가 있는 RSASSA-PKCS1-v1_5입니다. |
RSA_SIGN_RAW_PKCS1_2048 |
2048비트 키가 있는 인코딩 없는 RSASSA-PKCS1-v1_5 서명입니다. |
RSA_SIGN_RAW_PKCS1_3072 |
3072비트 키가 있는 인코딩 없는 RSASSA-PKCS1-v1_5 서명입니다. |
RSA_SIGN_RAW_PKCS1_4096 |
4096비트 키가 있는 인코딩 없는 RSASSA-PKCS1-v1_5 서명입니다. |
RSA_DECRYPT_OAEP_2048_SHA256 |
SHA256 다이제스트가 있는 RSAES-OAEP 2048비트 키입니다. |
RSA_DECRYPT_OAEP_3072_SHA256 |
SHA256 다이제스트가 있는 RSAES-OAEP 3072비트 키입니다. |
RSA_DECRYPT_OAEP_4096_SHA256 |
SHA256 다이제스트가 있는 RSAES-OAEP 4096비트 키입니다. |
RSA_DECRYPT_OAEP_4096_SHA512 |
SHA512 다이제스트가 있는 RSAES-OAEP 4096비트 키입니다. |
RSA_DECRYPT_OAEP_2048_SHA1 |
SHA-1 다이제스트가 있는 RSAES-OAEP 2048비트 키입니다. |
RSA_DECRYPT_OAEP_3072_SHA1 |
SHA-1 다이제스트가 있는 RSAES-OAEP 3072비트 키입니다. |
RSA_DECRYPT_OAEP_4096_SHA1 |
SHA-1 다이제스트가 있는 RSAES-OAEP 4096비트 키입니다. |
EC_SIGN_P256_SHA256 |
SHA256 다이제스트가 있는 NIST P-256 곡선 위의 ECDSA입니다. 다른 해시 함수를 사용할 수도 있습니다. https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms |
EC_SIGN_P384_SHA384 |
SHA384 다이제스트가 있는 NIST P-384 곡선 위의 ECDSA입니다. 다른 해시 함수를 사용할 수도 있습니다. https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms |
EC_SIGN_SECP256K1_SHA256 |
NIST가 아닌 secp256k1 곡선의 ECDSA입니다. 이 곡선은 HSM 보호 수준에서만 지원됩니다. 다른 해시 함수를 사용할 수도 있습니다. https://cloud.google.com/kms/docs/create-validate-signatures#ecdsa_support_for_other_hash_algorithms |
HMAC_SHA256 |
256비트 키가 있는 HMAC-SHA256 서명입니다. |
HMAC_SHA1 |
160비트 키가 있는 HMAC-SHA1 서명입니다. |
HMAC_SHA384 |
384비트 키가 있는 HMAC-SHA384 서명입니다. |
HMAC_SHA512 |
512 비트 키가 있는 HMAC-SHA512 서명입니다. |
HMAC_SHA224 |
224비트 키가 있는 HMAC-SHA224 서명입니다. |
EXTERNAL_SYMMETRIC_ENCRYPTION |
외부 키 관리자의 대칭 암호화를 나타내는 알고리즘입니다. |
KeyOperationAttestation
키 작업에 대해 HSM에서 생성된 증명을 포함합니다. 자세한 내용은 증명 확인을 참조하세요.
JSON 표현 |
---|
{ "format": enum ( |
필드 | |
---|---|
format |
출력 전용. 증명 데이터의 형식입니다. |
content |
출력 전용. 키 작업이 수행될 때 HSM에서 제공한 증명 데이터입니다. base64 인코딩 문자열입니다. |
certChains |
출력 전용입니다. 증명을 검증하는 데 필요한 인증서 체인입니다. |
AttestationFormat
HSM에서 제공한 증명 형식입니다.
열거형 | |
---|---|
ATTESTATION_FORMAT_UNSPECIFIED |
지정되지 않음 |
CAVIUM_V1_COMPRESSED |
gzip으로 압축된 Cavium HSM 증명입니다. 이 형식은 Cavium에 의해 정의되었으며 언제든지 변경될 수 있습니다. https://www.marvell.com/products/security-solutions/nitrox-hs-adapters/software-key-attestation.html을 참조하세요. |
CAVIUM_V2_COMPRESSED |
gzip으로 압축된 Cavium HSM 증명 V2입니다. 이 형식은 Cavium 버전 3.2-08에 도입된 새로운 형식입니다. |
CertificateChains
증명을 확인하는 데 필요한 인증서 체인입니다. 체인의 인증서는 PEM으로 인코딩되며 https://tools.ietf.org/html/rfc5246#section-7.4.2를 기준으로 정렬됩니다.
JSON 표현 |
---|
{ "caviumCerts": [ string ], "googleCardCerts": [ string ], "googlePartitionCerts": [ string ] } |
필드 | |
---|---|
caviumCerts[] |
증명에 해당하는 Cavium 인증서 체인입니다. |
googleCardCerts[] |
증명에 해당하는 Google 카드 인증서 체인입니다. |
googlePartitionCerts[] |
증명에 해당하는 Google 파티션 인증서 체인입니다. |
ExternalProtectionLevelOptions
ExternalProtectionLevelOptions는 EXTERNAL
보호 수준 및 EXTERNAL_VPC
보호 수준과 관련된 CryptoKeyVersion
을 구성하기 위한 추가 필드 그룹을 저장합니다.
JSON 표현 |
---|
{ "externalKeyUri": string, "ekmConnectionKeyPath": string } |
필드 | |
---|---|
externalKeyUri |
이 |
ekmConnectionKeyPath |
[EkmConnection][]을 사용하는 경우 EKM의 외부 키 자료 경로입니다(예: 'v0/my/key'). [EkmConnection][]을 사용할 때 externalKeyUri 대신 이 필드를 설정합니다. |
CryptoKeyPurpose
CryptoKeyPurpose
는 CryptoKey
의 암호화 기능을 설명합니다. 특정 키는 자신의 용도에 따라 허용되는 작업에만 사용될 수 있습니다. 자세한 내용은 키 용도를 참조하세요.
열거형 | |
---|---|
CRYPTO_KEY_PURPOSE_UNSPECIFIED |
지정되지 않았습니다. |
ENCRYPT_DECRYPT |
이러한 용도의 CryptoKeys 는 [Encrypt][KeyManagementService.Encrypt] 및 [Decrypt][KeyManagementService.Decrypt]와 함께 사용될 수 있습니다. |
ASYMMETRIC_SIGN |
이러한 용도의 CryptoKeys 는 [AsymmetricSign][KeyManagementService.AsymmetricSign] 및 [GetPublicKey][KeyManagementService.GetPublicKey]와 함께 사용될 수 있습니다. |
ASYMMETRIC_DECRYPT |
이러한 용도의 CryptoKeys 는 [AsymmetricDecrypt][KeyManagementService.AsymmetricDecrypt] 및 [GetPublicKey][KeyManagementService.GetPublicKey]와 함께 사용될 수 있습니다. |
MAC |
이러한 용도의 CryptoKeys 는 [MacSign][KeyManagementService.MacSign]과 함께 사용될 수 있습니다. |
CryptoKeyVersionTemplate
CryptoKeyVersionTemplate
은 [CreateCryptoKeyVersion][KeyManagementService.CreateCryptoKeyVersion]을 사용하여 수동으로 또는 자동 순환의 결과로 자동으로 새 CryptoKeyVersion
을 만들 때 사용할 속성을 지정합니다.
JSON 표현 |
---|
{ "protectionLevel": enum ( |
필드 | |
---|---|
protectionLevel |
이 템플릿을 기반으로 |
algorithm |
필수 항목입니다. 이 템플릿을 기반으로 이전 버전과의 호환성을 위해 이 두 필드가 모두 생략되고 |
방법 |
|
---|---|
|
특정 클라우드 프로젝트에서 Cloud KMS가 관리하는 암호화 키를 반환합니다. |