LoginSignup
1
0

More than 1 year has passed since last update.

AWS KMS(その1)について

Posted at

はじめに

 こんにちは。本日はセキュリティスペシャリティを学習している中で自分が弱いなと思ったAWS KMSについて纏めてみようと思います。
 
 よろしくお願いします(。・ω・)ノ゙

AWS KMSの概要

 AWS Key Management Service(KMS)はデータ暗号化に使用される暗号化キーの作成と管理を行うAWSのマネージド型サービス。AWSのサービスで暗号化処理が行われる場合ほとんど使用されることが多い。
 キーの管理や可用性、物理的セキュリティ、ハードウェア管理はAWS側の責任範囲になっており、KMSの暗号化キーの操作履歴はCloudTrailに保存される。

エンベロープ暗号化とは

 一般的な暗号化方式では、平文のデータを何らかの鍵を使って暗号化することで保護します。このとき、この鍵がデータとセットで盗まれてしまうと、暗号を解かれてしまい、生のデータを見られてしまいます。そこで、データを暗号化した鍵を、別の鍵でさらに暗号化することでデータをより強固に保護しよう、というのがエンベロープ暗号化の考え方です。
 
 ・Customer Master Key(CMK):CDKを暗号化するためのキー
 ・Customer Data Key(CDK) :データを暗号化するためのキー

KMS API

 KMSを利用する際の主なAPIの説明

◆GenerateDataKey
  CMKにより暗号化されたCDKとプレーンなCDKの二種類のキーが返される
◆GenerateDataKeyWithoutPlaintext
  CMKにより暗号化されたCDKのみ返される。暗号化されたデータキーを暗号化用とで取り出したい場合は、不用意にプレーンなCDKを取り出さないためにこのAPIを使用します。

◆Decrypt
  暗号化されたCDKをCMKで複合することができます。

◆Encrypt
  CMKは生成されたリージョン内でしか利用できないため、別リージョンでは新たに生成する必要があり、CDKを別リージョンでEncryptを使用してCDKを別リージョンのCMKを暗号化する。

◆CreateKey
  新規CMKを作成。

◆CreateAlias
  CMKを別名として呼び出し管理できるエイリアスを生成します。エイリアスを指定してEncryptやGenerateDataKeyを実行することができる。

◆DisableKey
  CMKの無効化に使用する。

◆EnableKeyRotation
  CMKのローテーションを有効にする。

◆DescribeKey
  指定したSMKの詳細を表示する。

CMKのタイプ

 ◆カスタマー管理CMK
 ・AWS利用者が作成・管理・所有するCMK
 ・開発したアプリケーションでデータを暗号化する際に使用する
 ・キーポリシーの表示やエイリアス作成などの各操作(※詳細後述)が実行できる
 ・1年ごとの自動ローテーションの有効/無効を設定できる

 ◆AWS管理CMK
 ・アカウント内にあるAWSサービスが利用者に代わって作成・管理・使用するCMK
 ・KMSのマネコン上にaws/[サービス名]で表示される
 ・キーポリシーの表示は可能だが変更はできず管理操作も実行できない
 ・3年ごとにAWS側で自動ローテーションされる

 ◆AWS所有CMK
 ・アカウントに関係なくAWSが所有し管理しているCMK
 ・こちら側からは見えない仕様のためあまり意識する必要がなく、AWSサービスが裏側で暗号化のために使用するものと思えばよし

CMKのタイプ CMK管理 AWSアカウント内 メタデータ表示 ローテーション
カスタマー管理CMK 1年間
AWS管理CMK 3年間
AWS所有CMK

CMKの有効化と無効化

 カスタマー管理のCMKは無効化、無効化後の再有効化ができます。AWS管理のCMKは永続的に有効化されており、無効化できなく無効にしたCMKは再度有効化するまで使用することができません。
 
 APIによるCMKの有効化と無効化
  EnableKeyまたはDisableKeyを呼び出すことで有効化または無効化ができます。

 ・有効化キー(CLI)

aws kms enable-key --key-id ~~

 ・無効化キー(CLI)

aws kms disable-key --key-id ~~

CMKの削除

 利用者が作成したCMKは、削除することができます。ただCMKを削除した場合、元に戻すことはできない。
 CMKの削除は非常にリスクが高いため、即時実行はできない。7~30日間の待機期間が設けられており、この期間はCMKが削除されない。デフォルトは30日間です。この待期期間はCMKの状態が削除保留中となり、待機期間中CMKは利用することができません。削除日時(待機期間の終了日時)は、マネコン、CLI、APIからそれぞれ確認できる。

CMKのローテーション

 自動キーローテーション
KMSには自動キーローテーションという機能があり、ローテーションとは新しいCMKを作成し、それ以降の暗号化処理は新しいCMKを使用することとなり、ローテーションを行ってもCMKを一意に指定するkey-idは同じままになる。自動キーローテーションを有効にすると、1年ごとにキーが自動ローテーションされる。

 手動キーローテーション
 セキュリティ要件などで、キーのローテーション機関が1年では長すぎる場合、短い期間で手動ローテーションを行う必要がある。手動ローテーションとは単純に新しいCMKを作成することです。key-idも新しくなるため、アプリケーション側でkey-idを指定して呼び出している場合は、アプリケーションに設定しているkey-idを合わせて更新する必要があります。
 

キーマテリアルのインポート

 ・キーマテリアル:CMKには暗号や複合に使用されるキーデータだけではなく、作成日、説明などのメタデータも含まれ暗号や覆道に使用されるキーデータのこと。

 ・Bring Your Own Key(BYOK):キーマテリアルがユーザー独自に作成したものをインポートすること
 

BYOKの制約

 インポートしたキーマテリアルを使用する場合、通常のAWSが生成するCMKと比べ以下のような制約や違いがあります。

 ・インポートするキーは256bitの対称キーのみ
 ・手動ローテーションする必要がありキーの自動ローテーションができない。1つのCMKに対し1つのインポートしたキーマテリアルしか設定できないという制約があるため
 ・リージョン障害などでCMKに障害があった場合、自動復旧されないためユーザー側でバックアップをしておく必要がある
 キーマテリアルに有効期限が設定可能で期限が切れると即時削除される。

おわりに

 1つの記事にまとめようと思いましたがもう少し続きます。

 (。・ω・)ノ゙バイバイ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0