Amazon Web Services ブログ

AWS Fargate プラットフォームバージョン 1.4 での一時的なストレージにおける、AWS Fargate 管理のキーを使ったサーバー側の暗号化

この記事は Yuling Zhou、Eduardo Lopez Biagi、Paavan Mistry の執筆によります

本日は、AWS Fargate プラットフォームバージョン 1.4 での、一時的なストレージにおけるサーバー側の暗号化を紹介します。この更新版のプラットフォームバージョンでは、AWS Fargate が管理するキーと業界標準の AES-256 暗号化アルゴリズムを使って、一時的なタスクストレージが自動的に暗号化されます。お客様がプラットフォームバージョン 1.4 で新たに起動する Amazon ECS タスクやサービスは、特別な設定を必要とせずにこの機能をご利用になれます。AWS Fargate 上で起動する Amazon EKS ポッドにはプラットフォームバージョン 1.4 が使用されます。したがって本日以降に起動されるポッドでは、一時的なストレージが Fargate 管理のキーにより暗号化されるようになります。

AWS Fargate でサービスを構築しているお客様には、保存中のデータに対する暗号化の需要があります。この場合、アプリケーションやワークロードもしくは環境に対応して、特定の機密やセキュリティおよびコンプライアンス上の要件を満たす必要があります。保存データの暗号化は、ディスク上に保存された機密性のあるデータを、不正アクセスから確実に保護するための法的コンプライアンスにとって非常に重要です。PCI DSSHIPAA など一部のコンプライアンス規制では、保存されているデータには、そのライフサイクル全体を通じての暗号化が求められます。当社では昨年、AWS Fargate の一時的ストレージに保存したデータに対する暗号化に関し、お客様からのご提案を集める目的で、AWS containers roadmap#314 版を通じてフィードバックを求めました。

従来、タスクストレージに書き込まれたデータの暗号化において、AWS Fargate のお客様が組織上のセキュリティとコンプライアンス要件を満たすためには、データ暗号化の制御機能を設計し、それをアプリケーションアーキテクチャの中に実装する必要がありました。今回の新機能では、データ保存中の一時的なタスクストレージが Fargate 管理のキーを用い暗号化されるので、お客様は、組織内もしくは法規制上のセキュリティとコンプライアンス要件を満たすことが可能になります。この機能を使うことで、AWS Fargate のタスクやサービスにアタッチされた一時的なストレージに書き込まれるデータは、お客様が一切のアクションを起こす必要もなく、そのストレージ上で常に暗号化され保存されるようになります。これにより、AWS Fargate で実行するタスクを綿密に保護するための、新たなセキュリティ層が追加されます。

AWS Fargate では、次のようなタイプのストレージがサポートされています。

  1. 非永続的ストレージ用の一時的なストレージ
  2. 永続的ストレージ用の Amazon EFS ボリューム
ストレージタイプ AWS Fargate プラットフォームバージョン (PV) 1.4
Amazon ECS タスク Amazon EKS ポッド
一時的なストレージ (20GB、サーバー側の暗号化付き) 更新版 PV 1.4 で利用可能 新規で起動する Amazon EKS ポッドで利用可能
Amazon EFS ボリューム (永続的ストレージ用) サポート中 サポートに向け準備中 (#826)

一時的なストレージにおけるサーバー側の暗号化は、AWS Fargate の更新版プラットフォームバージョン 1.4 により使用が可能になりました。前出の表に示した通り、今回更新した PV 1.4 内で新たに起動する Amazon ECS タスクでは、20GB の一時的なストレージに関して、AWS Fargate 管理のキーを使ったサーバー側の暗号化によるメリットが享受できるようになります。Amazon EKS でも、更新版の AWS Fargate PV 1.4 を使用するので、本日以降 AWS Fargate で起動する Amazon EKS ポッドにも、この同じ機能が適用されます。

AWS Fargate での永続的ストレージ用 Amazon EFS ボリュームをお使いの場合は、私達の同僚である Massimo Re Ferre が執筆した、このトピックに関する 3 回のブログシリーズをご参照ください。保存中のデータなど、EFS ボリュームの暗号化についての一般事項は、ホワイトペーパーの「Encrypting File Data with Amazon EFS」をご参照ください。保管中の Amazon EFS ファイルシステムにおける強制的な暗号化については、こちらのウォークスルーをご参照ください。

例: 一時的なストレージでの暗号化を使用しながら AWS Fargate PV 1.4 で Amazon ECS タスクを起動する

この例では、支払い用カードのデータ処理アーキテクチャに組み込まれるような、ウェブサーバータスクが定義されていることを想定しています。

{
   "containerDefinitions": [ 
      { 
         "command": [
            "/bin/sh -c \"echo '<html> <head> <title>Payment Processing Web Interface</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
         ],
         "entryPoint": [
            "sh",
            "-c"
         ],
         "essential": true,
         "image": "httpd:2.4",
         "logConfiguration": { 
            「logDriver」: "awslogs"、
            "options": { 
               "awslogs-group" : "/ecs/fargate-task-definition",
               "awslogs-region": "us-east-1",
               "awslogs-stream-prefix": "ecs"
            }
         },
         "name": "sample-fargate-app",
         "portMappings": [ 
            { 
               "containerPort": 80,
               "hostPort": 80,
               "protocol": "tcp"
            }
         ]
      }
   ],
   "cpu": "256",
   "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
   "family": "fargate-task-definition",
   "memory": "512",
   "networkMode": "awsvpc",
   "requiresCompatibilities": [ 
       "FARGATE" 
    ]
}

このタスクは、次に示すような AWS CLI コマンドを使い ECS クラスター内で起動されています。このため、プラットフォームバージョン1.4 で Fargate 管理の暗号キーを使い暗号化された 20GB の一時的ストレージが、特別な設定なしで使用されます。

aws ecs run-task --cluster <clustername> \
--task-definition <taskdefinition>:<version> \
--count 1 --launch-type "FARGATE" \
--platform-version 1.4.0 \
--network-configuration "awsvpcConfiguration={subnets=[<subnetid>],securityGroups=[<securitygroupid>]}" \ 
--region <region>

既存のタスクとポッドを、一時的なストレージでのサーバー側の暗号化を使用するように更新する

シナリオ 1: プラットフォームバージョン 1.4 で現在実行中の Fargate 起動タイプを使う Amazon ECS のサービスおよびタスクの場合

今回のリリース前のプラットフォームバージョン 1.4 で実行するタスクを使っているサービスに対しては、[新しいデプロイの強制] をクリックしてサービスを再起動する必要があります。詳細については、「サービスの更新」をご参照ください。これによりタスクは、更新版のプラットフォームバージョン 1.4 での一時的なストレージにおけるサーバー側の暗号化が有効化され、再デプロイされます。

シナリオ 2: プラットフォームバージョン 1.3 (最新) 以前のバージョンで実行中の Fargate 起動タイプを使う Amazon ECS のサービスおよびタスクの場合

プラットフォームバージョン 1.3 以前で実行するタスクを使用するサービスの場合は、プラットフォームバージョン 1.4 を指定した上で [新しいデプロイの強制] をクリックすることで、サービスの更新が行えます。これによりタスクは、最新のプラットフォームバージョンで再デプロイされます。詳細については、「サービスの更新」をご参照ください。

シナリオ 3: AWS Fargate 起動タイプを使う Amazon EKS ポッドの場合

AWS Fargate 起動タイプを使う Amazon EKS クラスター内にポッドやデプロイがある場合、ポッドやそれに対応するデプロイを再起動し、更新版の AWS Fargate プラットフォームバージョン 1.4 を適用する必要があります。

関連する更新予定と参照できるドキュメント

当社では、暗号化機能の実装、特にキーの管理については、お客様ごとに所有と制御権に関するさまざまな要件が存在することを認識しております。現在、一時的なストレージ向けとして、AWS Key Management Service (AWS KMS) で保存できるカスタマーマスターキー (CMK) を導入するための機能について作業を進めています。この機能では、お客様が CMK のオリジン、所有者、監査などを制御するための新たなメカニズムが、AWS KMS のキー管理制御サポートが提供する他のメリットと合わせて、リリースされる予定です。

また、次に示すような AWS Fargate に関し参照できるドキュメントも公開しており、今回のリリースを詳しく知るために有用です。

AWS Fargate プラットフォームバージョン 1.4 を使えば、保存中データへの暗号化機能を今すぐ利用開始いただけます。AWS コンテナ ロードマップチャンネルを通じてのフィードバックも歓迎しております。ぜひこの機能を使用して、安全でコンプライアントな AWS Fargate アプ​​リケーションを構築してください!

AWS Fargate をこれからお使いになるお客様にとっては、インフラストラクチャを配慮せずにコンテナが使用できることの意味を理解する上でも、今回のリリースは良い出発点となるはずです。

 

Yuling Zhou

Yuling Zhou

Yuling は、AWS のコンテナー向けソフトウェア開発エンジニアです。

Eduardo Lopez

Eduardo Lopez

Eduardo は、AWS Fargate チームのソフトウェア開発エンジニアです。