Cloud EKM ์˜ค๋ฅ˜ ์ฐธ์กฐ

์ด ์ฃผ์ œ์—์„œ๋Š” Cloud ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ์ž(Cloud EKM)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ํ•ด์„ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜์˜ ๊ตฌ์กฐ

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์˜ ๊ตฌ์กฐ๋Š” ๋ฌธ์ œ ์ง„๋‹จ ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์— ๋„์›€์ด ๋˜๋Š” ์ตœ๋Œ€ํ•œ ์„ธ๋ถ„ํ™”๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” google.rpc.Status ๊ตฌ์กฐ๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ ๋‚ด์˜ ์„ธ๋ถ€ ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • google.rpc.Status.code ํ•„๋“œ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • google.rpc.Status.message ํ•„๋“œ๋Š” ์‹œ๋„๋œ ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด ๋ฐ ์˜ค๋ฅ˜ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ปจํ…์ŠคํŠธ ์ข…์† ์ œ์•ˆ ๋“ฑ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • google.rpc.Status.code๊ฐ€ FAILED_PRECONDITION์ด๋ฉด google.rpc.PreconditionFailure ๊ตฌ์กฐ์—์„œ ๋จธ์‹ ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” violation ๊ตฌ์กฐ ๋‘ ๊ฐœ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    • violation[0]์—๋Š” Cloud EKM ํ‚ค ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
    • violation[1]์—๋Š” ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ์‹œ๋„์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

      violation[1].type์—๋Š” ์˜ค๋ฅ˜ ์œ ํ˜•์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Cloud EKM์—์„œ๋Š” ์ด ์ •๋ณด๋ฅผ '์˜ค๋ฅ˜ ๋„๋ฉ”์ธ'์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

      ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์†๋˜๋ฉด ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์ง€์›ํŒ€์—๊ฒŒ ๋ฌธ์˜ํ•˜์„ธ์š”.

์ด ์ฐธ์กฐ์—์„œ google.rpc.Status.message์˜ ๋ฉ”์‹œ์ง€๋Š” ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ž˜๋ฆฝ๋‹ˆ๋‹ค. ์ž˜๋ฆฐ ๋ถ€๋ถ„์—๋Š” ์™ธ๋ถ€ ํ‚ค URI ๋˜๋Š” ํ‚ค ๊ฒฝ๋กœ์™€ ๊ฐ™์€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

Cloud EKM์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋Š” ์ž…๋ ฅ ์˜ค๋ฅ˜, Cloud EKM, ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ, ์ž…๋ ฅ ๊ฐ„์˜ ํ†ต์‹  ๋˜๋Š” ๊ธฐํƒ€ ์š”์ธ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์˜ค๋ฅ˜ ์œ ํ˜•์— ๋Œ€ํ•œ ์„น์…˜์—์„œ ํŠน์ • ๋ฌธ์ œ ํ•ด๊ฒฐ ์ •๋ณด๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ์œ ํ˜•์— ๋”ฐ๋ผ Cloud EKM ์ง€์›ํŒ€ ๋˜๋Š” ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ํ‘œ์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด VPC ์˜ค๋ฅ˜๋ฅผ ํ†ตํ•œ EKM ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž…๋ ฅ ์˜ค๋ฅ˜

์˜ค๋ฅ˜์˜ google.rpc.Status.message ํ•„๋“œ์— ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๊ณ„์†๋˜๋ฉด Google Cloud ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•˜์„ธ์š”.

๋ณ„๋„๋กœ ๋ช…์‹œ๋˜์ง€ ์•Š์€ ํ•œ ์ด ์„น์…˜์˜ ์˜ค๋ฅ˜์—๋Š” google.rpc.Status.code์˜ FAILED_PRECONDITION๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

google.rpc.Status.message violation[1].type
(์˜ค๋ฅ˜ ๋„๋ฉ”์ธ)
๋ฌธ์ œ ํ•ด๊ฒฐ
Permission was denied when accessing the EKM_ELEMENT. EXTERNAL_PERMISSION_DENIED EKM_ELEMENT๊ฐ€ key์ด๋ฉด Cloud EKM์—์„œ ํ‚ค ๋ฒ„์ „๋„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ์ž์— ์ ์ ˆํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ ํ›„ Cloud EKM ํ‚ค๋ฅผ ์ˆœํ™˜ํ•˜์—ฌ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”.
EKM_ELEMENT๊ฐ€ crypto space ๋˜๋Š” EKM host์ธ ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์— ์ ์ ˆํ•œ ์—ญํ•  ๋˜๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
Could not find a EKM_ELEMENT ๋˜๋Š” Could not query EKM host. EXTERNAL_NOT_FOUND EKM_ELEMENT๊ฐ€ key์ธ ๊ฒฝ์šฐ ์™ธ๋ถ€ ํ‚ค URI ๋˜๋Š” ํ‚ค ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
EKM_ELEMENT๊ฐ€ crypto space์ธ ๊ฒฝ์šฐ ์•”ํ˜ธํ™” ๊ณต๊ฐ„ ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
EKM host๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ EKM ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋งž๊ฒŒ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•˜์„ธ์š”.
Key URI has invalid format. EXTERNAL_KEY_URI_INVALID ์ด ์š”์ฒญ์˜ ํ‚ค URI๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜๊ณ  Cloud EKM ํ‚ค๋ฅผ ์ˆœํ™˜ํ•˜์—ฌ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”.
Key URI host is not supported. EXTERNAL_KEY_HOST_NOT_WHITELISTED ํ‚ค URI๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ์˜ ์ž์ฒด ๋ฐฐํฌ๋ฅผ ์šด์˜ํ•˜๋Š” ๊ฒฝ์šฐ Google Cloud ์ง€์›ํŒ€์—๊ฒŒ ๋ฌธ์˜ํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•˜์„ธ์š”.
Could not resolve the domain name for EKM_ELEMENT. DNS ํ‚ค URI, ํ‚ค ๊ฒฝ๋กœ, ์•”ํ˜ธํ™” ๊ณต๊ฐ„ ๋˜๋Š” EKM ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅด๋ฉด ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ ์ง€์›ํŒ€์— ๋ฌธ์˜ํ•˜์„ธ์š”.

์žฌ์‹œ๋„ ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜

์˜ค๋ฅ˜์˜ google.rpc.Status.message ํ•„๋“œ์— ์žˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ์ œํ•œ์ด๋‚˜ ๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด Cloud EKM ํ‚ค์˜ ์ง€๋ฆฌ์  ์œ„์น˜๊ฐ€ ์™ธ๋ถ€ ํ‚ค์— ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์— ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ง€์†๋˜๋ฉด ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์ง€์›ํŒ€์—๊ฒŒ ๋ฌธ์˜ํ•˜์„ธ์š”.

๋ณ„๋„๋กœ ๋ช…์‹œ๋˜์ง€ ์•Š์€ ํ•œ ์ด ์„น์…˜์˜ ์˜ค๋ฅ˜์—๋Š” google.rpc.Status.code์˜ FAILED_PRECONDITION๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. EKM_ELEMENT๋Š” key, crypto space, EKM host ๊ฐ’ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

google.rpc.Status.message violation[1].type
(์˜ค๋ฅ˜ ๋„๋ฉ”์ธ)
Throttled when trying to access key URI. EXTERNAL_RESOURCE_EXHAUSTED
Could not reach the EKM_ELEMENT due to an external networking error. UNREACHABLE_NETWORK
Could not reach the EKM_ELEMENT because the external key manager reports that it is overloaded. OVERLOADED_EKM
Timed out when trying to access the EKM_ELEMENT. TIMEOUT
์ผ๋ฐ˜์ ์œผ๋กœ EKM์˜ ์‘๋‹ต ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋А๋ฆด ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. EKM์ด ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋ณด๋‹ค ๋งŽ์€ ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. REQUEST_CANCELLED

์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์˜ค๋ฅ˜

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ง€์†๋˜๋ฉด ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์ง€์›ํŒ€์—๊ฒŒ ๋ฌธ์˜ํ•˜์„ธ์š”.

๋ณ„๋„๋กœ ๋ช…์‹œ๋˜์ง€ ์•Š์€ ํ•œ ์ด ์„น์…˜์˜ ์˜ค๋ฅ˜์—๋Š” google.rpc.Status.code์˜ FAILED_PRECONDITION๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. EKM_ELEMENT๋Š” key, crypto space, EKM host ๊ฐ’ ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

google.rpc.Status.message violation[1].type
(์˜ค๋ฅ˜ ๋„๋ฉ”์ธ)
Could not validate the TLS server certificate for the EKM_ELEMENT. TLS_CERT
Got garbled or unusable response when trying to access the EKM_ELEMENT. UNEXPECTED_RESPONSE
External server error when trying to access the EKM_ELEMENT. EXTERNAL_SERVER_ERROR
The external key manager indicated they have not implemented the appropriate method to support Cloud KMS's EKM_API.
EKM_API๋Š” AsymmetricSign, CheckCryptoSpacePermissions, CreateKey, Decrypt, DestroyKey, Encrypt, GetInfo, GetPublicKey ์ค‘ ํ•˜๋‚˜์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
EXTERNAL_NOT_IMPLEMENTED
Got unexpected error when trying to access the EKM_ELEMENT. UNEXPECTED_ERROR
Decryption failed: The EKM reports that decryption failed.
์ฆ‰, ํ‚ค URI๋Š” ์œ ํšจํ•˜์ง€๋งŒ ์™ธ๋ถ€ ํ‚ค ๊ด€๋ฆฌ ํŒŒํŠธ๋„ˆ ์‹œ์Šคํ…œ์ด ๋ž˜ํ•‘๋œ blob ๋˜๋Š” ์ถ”๊ฐ€ ์ธ์ฆ ๋ฐ์ดํ„ฐ(AAD)๋ฅผ ๋ณตํ˜ธํ™”ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
google.rpc.Status.code๋Š” INVALID_ARGUMENT์ž…๋‹ˆ๋‹ค.
DECRYPTION_FAILED

์ง€์› ๋ฐ›๊ธฐ

์ด ์ฐธ์กฐ์— ๋‚˜์™€ ์žˆ์ง€ ์•Š์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Google Cloud ์ง€์›ํŒ€์—๊ฒŒ ๋ฌธ์˜ํ•˜์„ธ์š”.