AWSのストレージ暗号化のセキュリティ強化について

2023年1月30日 富士通株式会社 公共デジタル事業本部  小沼 真実

はじめに

AWSをはじめとするクラウドサービスにおいて、データ管理はユーザ側の責任範囲となります。AWS Well-Architected Framework セキュリティ 設計原則として、データ分類は組織のデータを機密性レベルに基づいてカテゴリーに分類し、暗号化により認証されていないアクセスに対してデータが開示されてしまうことを防ぐ必要があることが書かれています。
また、「政府機関等のサイバーセキュリティ対策のための統一基準」(注1)にも記載がある通り、要機密情報を取り扱う情報システムは、データの暗号化を検討する必要があります。

AWSでデータを保管するストレージについては、目的ごとにいくつか種類があり、それぞれ暗号化の仕組みや実施方法が異なるため、本記事ではその暗号化の留意点を解説します。
また、システム構築時に設定した暗号化を運用フェーズでも維持していく必要があるため、暗号化を解除されないよう抑止する方法、暗号化の状況を監視する方法についても併せて解説します。
なお、AMIやRDSのほか、ネットワーク関連の暗号化については、本解説の対象外とします。

  • (注1)
    政府機関等のサイバーセキュリティ対策のための統一基準(令和3年度版)
    6.1 6.1.5 (1) (a) (ア) 要機密情報を取り扱う情報システムについては、暗号化を行う機能の必要性の有無を検討し、必要があると認めたときは、当該機能を設けること。
    https://www.nisc.go.jp/pdf/policy/general/kijyunr3.pdfPDF

ストレージの種類

AWSにはいくつかストレージサービスが存在するため、改めて以下の表に整理します。

サービス名概要種類
Amazon Simple Storage Service (S3)インターネットからアクセス可能なオブジェクトストレージサービス。
  • 【汎用】S3標準
  • 【不明なアクセスまたはアクセス権の変更】S3 Intelligent-Tiering
  • 【低頻度アクセス】S3標準-IA、S3 1ゾーンIA
  • 【アーカイブ】S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、S3 Deep Archive
Amazon Elastic Block Store (EBS)EC2にアタッチして使用するボリュームストレージサービス。
  • 汎用SSD(gp3、gp2)
  • Provisioned IOPS
  • スループッド最適化HDD
  • Cold HDD
Amazon Elastic File System (EFS)複数のLinuxサーバからマウントして使用できるファイルシステムサービス。
Amazon FSx for Windows File Server複数のWindowsサーバからマウントして使用できるファイルシステムサービス。

S3の暗号化

S3 バケットでは、デフォルト暗号化を有効に設定することにより、すべてのオブジェクトがバケットに保存される際に暗号化されます。S3バケットのデフォルト暗号化を有効に設定すると、暗号化オプションなしでオブジェクトをアップロードした場合も、暗号化されて保存されます。S3を暗号化する方法は複数あるため、システムの事情に合わせて選択する必要があります。

サービス名概要種類
サーバサイド暗号化(SSE:Server Side Encryption)SSE-S3
  • Amazon S3がキーの生成・管理・保管を行う。
  • 標準S3バケットへのリクエスト料金は発生するが、SSE-S3の利用に料金は発生しない。
  • 設定画面のオプションで有効化すると、すぐ利用開始できる。
  • 自分で暗号化に利用するキーの選択や変更はできない。
SSE-KMS
  • AWS KMS がキーの生成・管理・保管を行う。
  • 標準S3バケットへのリクエスト料金と、AWS KMSへの暗号化・復号化のリクエスト料金が発生する。
  • AWS KMS側で別途設定が必要になる。
  • AWS KMS自体の機能により、詳細なキー管理を設定することができる。
SSE-C
  • ユーザがキーの生成・管理・保管を行う。
  • 標準S3バケットへのリクエスト料金は発生するが、暗号化・復号化に伴う料金は発生しない。
  • 任意のキーを用いて暗号化することができる。
  • コンソールからアクセスできないため、CLIを利用する必要がある。
  • アクセスキーの流出や不正アクセスにも強い。
クライアントサイド暗号化(CSE:Client Side Encryption)CSE
  • 暗号化してからアップロードする方法。
  • 暗号化する際に使用するキーは、KMSを使用する方法か、独自のキーを使用する。

S3の暗号化(CSEとSSE)

また、Amazon S3 バケットポリシーで aws:SecureTransport 条件を使用して、HTTPS (TLS) を介した暗号化接続のみを許可することにより、潜在的な攻撃者が中間者攻撃または同様の攻撃を使用してネットワークトラフィックを盗聴または操作することを防止できます。

EBSの暗号化

EC2 インスタンス(EBS)は、ブートボリュームとデータボリュームの両方を暗号化することができます。暗号化された EBS ボリュームを作成し、サポートされるインスタンスタイプにアタッチする場合、以下のタイプのデータが暗号化されます。

  • ボリューム内の保存データ
  • ボリュームとインスタンスの間で移動されるすべてのデータ
  • ボリュームから作成されたすべてのスナップショット
  • スナップショットから作成されたすべてのボリューム

EC2 インスタンス(EBS)を暗号化するには、以下の方法で実施します。

暗号化手段設定方法
EC2から暗号化
  • EC2インスタンスを起動のステップ4「ストレージの追加」の画面で「暗号化」箇所から、KMSエイリアスキーから暗号化キーを選ぶ。(事前に登録しておいたキーを選ぶことも可能)
  • ステップ7「インスタンス作成の確認」の画面でストレージが「暗号化済み」となっていることを確認する。
デフォルト暗号化
  • EC2ダッシュボードで右上に表示されている「アカウントの属性」より「EBS暗号化」を選び、「EBS暗号化」タブの「管理」をクリックする。
  • 「常に新しいEBSボリュームを暗号化」の「有効化」にチェックを入れて、「EBS暗号化を更新する」をクリックする。
  • 「EBS暗号化設定が保存されました」メッセージが表示され、「常に新しいEBSボリュームを暗号化」箇所が「有効」と表示されることを確認できる。

また、EBSスナップショットの暗号化方法として、EBSをデフォルト暗号化している場合、スナップショットを取得するだけで暗号化されます。EBSをデフォルト暗号化してなかった場合でも、以下の手順で暗号化することができます。

  • KMSキーを作成する
  • スナップショット(暗号化されていない)を取得する
  • スナップショットのコピー時に暗号化を実施する
  • 暗号化したEBSボリュームが作成される
  • 既存の暗号化されていないEBSをデタッチする
  • 暗号化されたEBSをアタッチする

暗号化済みEBSへの入れ替え方法

EFS・FSxの暗号化

Amazon EFS は、ファイルシステムの作成時にのみ暗号化を設定することが可能であり、保存するデータに対し、AWS KMSを使用して管理されるキーを使用して暗号化されます。ファイルシステムの作成後に変更することはできません。
また、Amazon EFS マウントヘルパーを使用し、ファイルシステムをEC2にマウントする際、Transport Layer Security (TLS) を有効にすることで、Amazon EFSへ転送中のデータを暗号化することができます。
Amazon FSx for Windows File Server は、ファイルシステムの作成時に暗号化を設定することが可能であり、保存するデータに対し、AWS KMSを使用して管理されるキーを使用して暗号化されます。ファイルシステムの作成後に変更することはできません。
また、ファイルシステムをEC2に接続する際、SMB プロトコルによりAmazon FSx for Windows File Serverへの転送中のデータを自動的に暗号化することができます。

EFSとFSxの暗号化

暗号化解除の抑止方法

これまで、システム構築時に手動で暗号化する場合の設定方法について、解説してきました。
システム運用開始後は、一旦暗号化した設定を解除されることなく、維持していく必要があります。AWS OrganizationsのSCP(Service Control Policy)又はIAMポリシーにて、デフォルト暗号化を解除可能な権限を付与しないなど、以下の方法があります。

サービス名抑止方法
Amazon Simple Storage Service (S3)「DeleteBucketEncryption」のアクションを制限することにより、バケット暗号化を削除できないようにすることが可能。それには「PutEncryptionConfiguration」の実行権限も制限する必要があるが、その場合、その他にも影響する可能性がある。
Amazon Elastic Block Store (EBS)「DisableEbsEncryptionByDefault」のアクションを制限することにより、EBS 暗号化をデフォルト無効にできないようにすることが可能。
Amazon Elastic File System (EFS)メトリクスフィルターにより、暗号化されていない ファイルシステムが作成されたことを検知するCloudWatch アラームを作成し、ファイルシステムとマウントターゲットを削除することが可能。

[ログメトリクスフィルターの定義]ページで[フィルターパターン] を選択し、以下のように入力する。

{ ($.eventName = CreateFileSystem) && ($.responseElements.encrypted IS FALSE) }

暗号化解除の抑止方法

暗号化状況の監視方法

同様にシステム運用開始後は、暗号化の設定が問題なく実施できているか監視していく必要があります。そのための手段として、以下の方法があります。

サービス名監視方法
Amazon Simple Storage Service (S3)Amazon S3 インベントリで暗号化設定状況を監査し、EventBridge、またはCloudWatch アラームで検知する。
Amazon Elastic Block Store (EBS)AWS Config で設定変更の情報を取得し、EventBridge、またはCloudWatch アラームで検知する。
Amazon Elastic File System (EFS)AWS CloudTrail で設定変更の情報を取得し、AWS Security Hub にて暗号化設定状況を評価する。
Amazon FSx for Windows File Server

暗号化状況の監視方法

暗号化の自動修復

もし、非暗号化のリソースが作成された場合でも、AWS Configのルールにより検知し、AWS Systems Manager Automationを利用して自動的にデフォルト暗号化を有効化することも可能です。

サービス名設定方法
Amazon Simple Storage Service (S3)
  • 自動修復用にIAMロールを作成し、ポリシーを設定しておく。
  • AWS Config > ルールからAWSマネージド型ルールの「s3-bucket-server-side-encryption-enabled」を選択する。
  • 「s3-bucket-server-side-encryption-enabled」ルールのアクションから修復の管理を選択、自動修復にチェックして修復アクションとして「AWS-EnableS3BucketEncryption」を選択する。
Amazon Elastic Block Store (EBS)
  • 自動修復用にIAMロールを作成し、ポリシーを設定しておく。
  • AWS Config > ルールからAWSマネージド型ルールの「ec2-ebs-encryption-by-default」を選択する。
  • 「ec2-ebs-encryption-by-default」ルールのアクションから修復の管理を選択、自動修復にチェックして修復アクションとして「AWSConfigRemediation-EnableEbsEncryptionByDefault」を選択する。その他バケット名や暗号化アルゴリズム(AES256など)を指定する。

暗号化の自動修復

おわりに

AWSにおけるストレージの暗号化についてご紹介してきましたが、いかがでしょうか?
最初に述べましたが、AWSをはじめとするクラウドサービスにおいて、データ管理はユーザ側の責任範囲となります。AWSを個人的に利用するというならまだしも、利用者向けにサービスを提供するようなシステムを構築する場合、ストレージの暗号化は忘れずに実施しましょう。

最後までお読みいただき、ありがとうございました。

このページの先頭へ