内容简介:整理 KMS 的學習筆記。CMKs 儲存在 AWS KMS,而且不會沒加密的離開 AWS KMS。是個加密密鑰 (encryption key),可以用來加密大型的檔案資料,或者其他資料加密密鑰。KMS 本身不會儲存、追蹤、管理 Data Key。必須自己管理。
整理 KMS 的學習筆記。
基本介紹
名詞
-
Customer Master Keys (CMKs): 用來加解密資料,每筆資料上限為 4KiB (4096 bytes)
- alias, creation
- key state
- key material: either customer provided or AWS
- Permission: Administrative Permission, Usage Permission
CMKs 儲存在 AWS KMS,而且不會沒加密的離開 AWS KMS。
- Data Keys
是個加密密鑰 (encryption key),可以用來加密大型的檔案資料,或者其他資料加密密鑰。KMS 本身不會儲存、追蹤、管理 Data Key。必須自己管理。
- Envelope Encryption (信封式加密)
當加密資料的時候,資料是被保護的,但是加密密鑰 (encryption key) 並沒有被保護。所以策略上,就是再加密它一次。
-
Encryption Context
- Additional Authenticated Data (AAD)
-
Key Material
- symmetric 256-bit key
- Grant Token
概念
生命週期
- KMS 是 Region Level
主要功能
加密 (Encrypt)
AWS_REGION="us-west-2"
## 四種表示 CKM_ID 的方式
CMK_ID="1234abcd-12ab-34cd-56ef-1234567890ab"
CMK_ID="alias/key-20181129"
CMK_ID="arn:aws:kms:${AWS_REGION}:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
CMK_ID="arn:aws:kms:${AWS_REGION}:123456789012:alias/key-20181129"
## 大小在 4KiB 以內
PLAINTEXT_PATH="plain_data.txt"
CIPHERTEXT_PATH="encrypted_data.bin"
## 加密:測試加密結果
aws kms encrypt \
--key-id ${CMK_ID} \
--plaintext fileb://${PLAINTEXT_PATH} \
--output text \
--query CiphertextBlob
## 加密:轉成 Base64
aws kms encrypt \
--key-id ${CMK_ID} \
--plaintext fileb://${PLAINTEXT_PATH} \
--output text \
--query CiphertextBlob | base64 --decode > ${CIPHERTEXT_PATH}
解密 (Decrypt),不需要指定 CMK_ID。
CIPHERTEXT_PATH="encrypted_data.bin"
PLAINTEXT_PATH="plaintext.data"
## 解密:測試解密,直接輸出
aws kms decrypt \
--ciphertext-blob fileb://${CIPHERTEXT_PATH} \
--output text \
--query Plaintext
## 解密:解 Base64 encoding
aws kms decrypt \
--ciphertext-blob fileb://${CIPHERTEXT_PATH} \
--output text \
--query Plaintext | base64 --decode > ${PLAINTEXT_PATH}
刪除 CMK
CMK 可以被刪除,但是為了避免因為刪除,造成資料永久無法解密,所以流程是:
-
必須先
Disable,這時候無法用這把 CMK 加密、解密,會出現類似這樣的訊息:An error occurred (DisabledException) when calling the Encrypt operation: arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab is disabled. An error occurred (DisabledException) when calling the Decrypt operation: arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab is disabled.
-
再執行
Schedule Key deletion(至少是七天後),這時候如果執行 encrypt 會出現這樣的錯誤訊息:An error occurred (KMSInvalidStateException) when calling the Encrypt operation: arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab is pending deletion. An error occurred (KMSInvalidStateException) when calling the Decrypt operation: arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab is pending deletion. Cancel Key Deletion
官方文件針對 CMK 狀態,可以執行那一些動作整理了一份列表,主要是針對 CMK 狀態
與 Action 的排列組合,詳細參閱 Key State Affects
。這列表基本上跟 Redmine Workflow 的狀態與角色切換列表差不多概念。
計費方式
計費項目分成以下部分:
- CMK 固定費用:每個 CMK 每月使用費用固定 1 USD,CMK 被刪除前同樣要收費。
- API 請求費用:每 10,000 個請求 0.03 USD (除了 GovCloud)
限制
整合應用
KMS 整合很多 AWS Services
S3 加密
預設的 Bucket 加密方式
virtual host 存取
下載
https://docs.aws.amazon.com/kms/latest/developerguide/services-s3.html
SES
https://docs.aws.amazon.com/kms/latest/developerguide/services-ses.html
Lambda
Secrets Manager
https://docs.aws.amazon.com/kms/latest/developerguide/services-secrets-manager.html
EBS
https://docs.aws.amazon.com/kms/latest/developerguide/services-ebs.html
DynamoDB
https://docs.aws.amazon.com/kms/latest/developerguide/services-dynamodb.html
CloudTrail
https://docs.aws.amazon.com/kms/latest/developerguide/services-cloudtrail.html
SSM Parameter Store
https://docs.aws.amazon.com/kms/latest/developerguide/services-parameter-store.html
監控 KMS 使用狀況
Namespace: AWS/KMS
https://docs.aws.amazon.com/kms/latest/developerguide/monitoring-cloudwatch.html
-
SecondsUntilKeyMaterialExpiration
*
常見問答
Q: 每個 CMK 有自己的 Admin / User 清單,那麼還需要授權給個別的 IAM User?
實測過,IAM User encrypt / decrypt 的權限由 CMK 的 Key Policy 管理。
Q: API Operation (e.g., Encrypt, Decrypt, GenerateDataKey) 有沒有 Rate Limit?
依照官方文件 KMS - Limits 的描述,主要的動作 (Decrypt, Encrypt, Generate*, ReEncrypt),在大部分的 Region RPS 都是 5000,us-east-1 / us-west-2 / eu-west-1 為 10,000。這些 RPS 是 Shared.
Q: Key Rotation 時,CMK 的 key ID, ARN, Region … 會改變嗎?
不會。
以上所述就是小编给大家介绍的《Study Notes - KMS》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Hit Refresh
Satya Nadella、Greg Shaw / HarperBusiness / 2017-9-26 / USD 20.37
Hit Refresh is about individual change, about the transformation happening inside of Microsoft and the technology that will soon impact all of our lives—the arrival of the most exciting and disruptive......一起来看看 《Hit Refresh》 这本书的介绍吧!