0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

こんにちは。
今回は、AWSの暗号化・鍵管理サービスについて、それぞれの役割や違いを整理してみます。

まず整理

AWSには暗号化や認証情報を管理するサービスが複数ありますが、管理する対象は大きく3種類に分けられます。

                AWSの暗号化・鍵管理

      ┌────────────┬──────────────┬──────────────┐
      │            │              │
   暗号鍵       シークレット     SSL/TLS証明書
      │            │              │
 AWS KMS      Secrets Manager     ACM
 CloudHSM     Parameter Store
管理するもの 主なサービス
暗号鍵 AWS KMS・AWS CloudHSM
パスワード・APIキー・シークレット AWS Secrets Manager・Systems Manager Parameter Store
SSL/TLS証明書 AWS Certificate Manager(ACM)

AWS KMSとは

AWS Key Management Service(KMS)は、暗号鍵(暗号化キー)を安全に作成・管理するサービスです。

例えば、Amazon S3のデータを暗号化する場合は次のようになります。

Amazon S3
     │
 AWS KMS
     │
暗号鍵で暗号化

AWSの多くのサービスと統合できるため、最も利用される鍵管理サービスです。

KMSで暗号化できる主なサービス

AWS KMSは多くのAWSサービスと統合されています。

例えば、

  • Amazon S3
  • Amazon EBS
  • Amazon RDS
  • Amazon DynamoDB
  • Amazon EFS
  • AWS Lambda(環境変数)
  • AWS Secrets Manager

などの暗号化に利用できます。

KMSキーの種類

種類 内容
AWS管理キー AWSが管理するキー
カスタマー管理キー(Customer Managed Key・旧称:CMK) ユーザーが管理するキー
インポートキー 外部で作成したキーを取り込む

細かなアクセス制御やローテーション設定を行いたい場合は、カスタマー管理キーを利用します。

AWS公式ドキュメントでは現在、「Customer Managed Key(カスタマー管理キー)」という表現が使われています。以前はCMKという略称が広く使われていました。

また、AWS KMSには、

  • Envelope Encryption(封筒暗号化)
  • キーポリシー
  • グラント(Grant)
  • マルチリージョンキー

など重要な機能があります。

AWS CloudHSM

AWS CloudHSMは、クラウド上でハードウェアセキュリティモジュール(HSM)を利用できるサービスです。

アプリケーション
      │
 AWS CloudHSM
      │
   秘密鍵

金融機関や政府機関など、高いセキュリティ要件が求められるシステムで利用されます。

KMSとの違い

項目 AWS KMS AWS CloudHSM
鍵管理 AWSが管理 ユーザーが管理
運用 簡単 やや複雑
コスト 比較的安価 高い
FIPS対応 HSMで保護(FIPS 140-2 Level 2相当) FIPS 140-2 Level 3対応

KMSも内部ではHSMを利用していますが、その運用はAWSが管理しています。

一方、CloudHSMではユーザー自身がHSMを管理するため、より厳しいコンプライアンス要件にも対応できます。

AWS Secrets Manager

AWS Secrets Managerは、パスワードやAPIキーなどのシークレット情報を安全に管理するサービスです。

保存できる情報の例

  • データベースのパスワード
  • APIキー
  • OAuthトークン
  • アクセストークン

最大の特徴

Secrets Manager最大の特徴は、シークレットの自動ローテーションです。

Secrets Manager
       │
ローテーション開始
       │
       ▼
AWS Lambda
       │
       ▼
Amazon RDS
       │
新しいパスワードを設定
       │
       ▼
Secrets Managerへ保存

例えばRDSでは、Lambdaと連携してパスワードの変更を自動化できます。

Systems Manager Parameter Store

Parameter Storeも設定値やシークレット情報を保存できるサービスです。

Secrets Managerとの違いを整理すると次のようになります。

項目 Parameter Store(Standard) Parameter Store(Advanced) AWS Secrets Manager
基本料金 無料 有料 有料
主な用途 設定値・環境変数 大規模設定・高度な管理 パスワード・APIキー
SecureString
自動ローテーション × ×
クロスアカウントアクセス △(構成による) △(構成による) ○(リソースベースポリシーを利用)

Parameter StoreにはStandard(無料)とAdvanced(有料) の2つのティアがあります。

一般的な設定値や環境変数であればStandardで十分ですが、大量のパラメータや高度な管理機能が必要な場合はAdvancedを利用します。

一方、Secrets ManagerはデータベースのパスワードやAPIキーなどの機密情報を管理することを目的としており、自動ローテーションやクロスアカウントアクセスなどの高度な機能を利用できます。

AWS Certificate Manager(ACM)

AWS Certificate Manager(ACM)は、SSL/TLS証明書を発行・管理するサービスです。

例えば、

HTTPS通信
      │
     ACM
      │
Application Load Balancer

のように利用できます。

証明書の更新も自動で行われるため、更新忘れによるサービス停止を防ぐことができます。

ACM利用時の注意点

ACMで発行した公開証明書は、

  • Application Load Balancer
  • Amazon CloudFront
  • Amazon API Gateway

などのAWSサービスで利用できます。

また、Amazon CloudFrontでACM証明書を利用する場合は、必ず米国東部(バージニア北部:us-east-1)リージョンで証明書を発行またはインポートする必要があります。

さらに、ACMで発行した公開証明書の秘密鍵は取得できないため、EC2へ直接インストールすることはできません。

EC2で利用する場合は、

  • 外部で取得した証明書をインポートする
  • AWS Private CAで発行する

などの方法を利用します。

サービスの使い分け

保存・管理したいもの サービス
暗号鍵 AWS KMS
HSMによる鍵管理 AWS CloudHSM
データベースパスワード AWS Secrets Manager
APIキー AWS Secrets Manager
アプリケーション設定値 Systems Manager Parameter Store
SSL/TLS証明書 AWS Certificate Manager

まとめ

AWSには暗号化や認証情報を管理するためのサービスが数多くありますが、それぞれ役割が異なります。

  • AWS KMS:暗号鍵を管理する
  • AWS CloudHSM:専有HSMで暗号鍵を管理する
  • AWS Secrets Manager:パスワードやAPIキーなどのシークレット情報を管理する
  • Systems Manager Parameter Store:設定値や環境変数を管理する
  • AWS Certificate Manager(ACM):SSL/TLS証明書を管理する
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?