Study Notes - KMS

栏目: 编程工具 · 发布时间: 4年前

内容简介:整理 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 可以被刪除,但是為了避免因為刪除,造成資料永久無法解密,所以流程是:

  1. 必須先 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.
    
  2. 再執行 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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微信力量

微信力量

谢晓萍等著 / 机械工业出版社华章公司 / 2015-10-28 / 59.00

微信俨然已进化为一种万能的连接器,拥有连接一切的能力,彰显出强大的连接力,无处不在,无所不能。本书将为你讲述连接为何能产生如此巨大的力量,这股力量正在商业和民生领域产生的变化,将为你展现微信生态进化的全景世界。 连接即入口,微信上的每一次有效的连接都会形成有效的入口。本书详细讲解了如何通过微信帮助餐饮、酒店、医院、零售、商场、电气、母婴、航空、客运、停车场、商圈、城市服务等数十个传统行业与它......一起来看看 《微信力量》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具