こんにちは!
今回は、AWS データストアで機密データを保護するベストプラクティスについて、実装方法を交えて解説していきたいと思います。
エンジニアにとって、セキュリティ問題は十分すぎるほど気を配りたいポイントです。ぜひ最後までご覧ください。
クラウド設計に必要な、さまざまなガイダンス・ベストプラクティスを提供するフレームワーク・AWS クラウド導入フレームワーク(AWS CAF)。Security Perspectiveと呼ばれる、セキュリティ分野に関するベストプラクティスを備えています。
Security Perspective には、主に下記の内容が含まれています。
その中でも機密データ保護は、データの保存形式、データへのアクセス権限について考えるのが最も近道と言われています。以下の3つの観点を意識しデータ保護について考えましょう。
次章以降、上記の3点を詳しく説明していきます。
データの分類・セキュリティゾーンのモデル化により、データに対する適切なレベルのネットワークアクセスコントロール(アクセス経路)・アクセスポリシーコントロール(アクセス認可)を適用できます。それぞれについて詳しく見ていきましょう。
まずは、さまざまな機密レベルのデータを正しく分類します。セキュリティゾーンのモデル化の際に、データの機密レベルに合ったセキュリティゾーンを定義するためです。
すべてのデータに対し厳格なセキュリティを設けた場合、開発効率の低下を招くため、機密レベルごとにデータを分類し見合ったセキュリティゾーン(セキュリティの厳格さのレベル)を設定します。
AWS では、データ分類方法のベストプラクティスとして下記が提唱されています。
また、分類の際に基準にしたい具体的な事項の例として、下記があげられます。
次に、データにアクセスする方法と場所を検討します。セキュリティゾーンには下記の特性があります。
IAM ポリシーの利用によって、AWS ネットワーク ACL(データベースへの不正なトラフィックをブロックする機能)を介したネットワーク間のアクセス制御を定義できます。
これによって機密データをセキュアゾーン(情報セキュリティ水準の高い環境)に配置し、外部からのアクセスを制限することで、機密データを守ることができます。
具体的なケースの例として、機密データを配置したセキュアゾーン上に、下記のようなゾーンがあることを想定します。
先述の AWS ネットワーク ACL を介したネットワークフローコントロールポリシーによって、セキュアゾーンへのアクセスを制限付きゾーンからのみに限定し、外部(一般公開資産の外部ゾーン)からのアクセスを防ぐことができます。
あらゆるセキュリティに言えることですが、設置したセキュリティが悪意のある行為により突破された場合に備え、複数のセキュリティコントロールを階層化し何重にも施すのが望ましいです。
セキュリティを階層化する際は、以下の2つの階層について考えます。
これらのセキュリティコントロールを階層化することで、例えば「予防的コントロール」を突破された際でも「発見的コントロール」によってセキュリティ問題に対応することができます。
AWS における予防的コントロールのユースケース、有効な AWS 製品を紹介します。
AWS のリソースへのアクセスを制御するには、AWS Identity and Access Management(IAM)サービスが有効です。ダッシュボード内でリソースへのアクセスを随時確認・制御することで、リソースへのアクセスを安全に管理できます。
セキュリティに関するベストプラクティスを提案してくれたり、セキュリティに問題がある場合はセキュリティアラートとして表示してくれたりするので安心です。
また、CloudFormation で IAM デプロイするように構築することで、より簡単・厳格に各 AWS リソースへのアクセス認可を実現することが可能となります。IAM は AWS を利用するなら利用必須とも言えるサービスですので、ぜひCloudFormation でのデプロイに取り組んでみてください。
AWS Shield などのサービスと Amazon CloudFront などのコンテンツ配信ネットワークサービスを組み合わせることで、ボリューム攻撃からストレージを保護できます。
また、AWS Shield は以下の AWS サービスに対し適用することが可能です。 AWS で Edge ロケーションにサーバーを立てる場合などもぜひ利用を検討してみてください。
Virtual Private Cloud (VPC) 内に配置するコンピュートリソースをリストアップし、アクセス制限を施したプライベートサブネット、パブリックサブネットの適切なサブネットへの配置を検討します。特に、データを保持するリソース(RDS、EBS等)へのアクセスは厳格に物理的制限を行います。(パブリックからのアクセスは確実に遮断します)このあたりは一般的なネットワーク設計のユースケースに則り構築を行います。
AWS では上記のような一般的なネットワークの設計に加え、VPC コンポーネントと呼ばれる以下のようなサービスを組み合わせることで、ユースケースに応じてより厳格なアクセス制御を実現することができます。
ネットワークのユースケースについては話が尽きないですが、私たちは以下の思考フローで適切なネットワーク設計を目指しています。
アプリケーションを SQL インジェクションなどの脅威から保護できます。AWS WAF 等によって実現できます。
AWS WAF は以下のサービスに適用することが可能ですので、AWS で API サーバー・ロードバランサー等を立てる場合はぜひ利用を検討してみてください。
AWSサービス | 保護内容 |
---|---|
Amazon CloudFront | エッジロケーションでリソースやコンテンツを保護するコンテンツ配信ネットワーク (CDN) の一部を保護。 |
Application Load Balancer (ALB) | ALB の背後にあるオリジンウェブサーバーを保護。 |
Amazon API Gateway | REST API への悪意のあるリクエストからコンピュートリソースを保護。 |
AWS AppSync | GraphQL API への悪意のあるリクエストからコンピュートリソースを保護。 |
許可されていないアクセスメカニズムによるデータの流出などのリスクから保護する処理です。保存時と送信中の両方で実行可能です。
AWS Key Management Service (KMS) を使用することで、暗号化キーを簡単に作成して管理し、幅広い AWS のサービスやアプリケーションでの使用を制御できるようになります
不正な行動を発見し、インシデント対応を随時行う制御です。実装できる発見的コントロールをピックアップしました。インシデントに迅速に対応するためにも、エンジニアとしてはチェックしておきたい事項です。
VPC フローログを継続的に監視し、セキュリティの異常の特定・修正が可能です。マネージド型サービス「Amazon GuardDuty」が VPC フローログや AWS CloudTrail 、DNS ログからフィードを受け取り、調査結果を提供します。調査結果を Amazon CloudWatch イベントとして利用し、自動応答を駆動できます。
システム設定のズレ(設定のドリフト)を特定して、データベースのセキュリティ体制の整合性を保ちましょう。代表的なものとして、下記のふたつの方法があります。
部門(業務フロー)の切り離しにより、2つのドメイン間でネットワークが厳密に分離されます。これにより、次の ふたつが実現できます。
以上より、部門の切り離しによって機密データを守ることができます。適切な IAM コントロールとネットワークフローコントロールを適用し、部門の切り離しを実現しましょう。
ここからは、紹介した AWS サービスを実際に操作していこうと思います。
操作するのは、設定のドリフトの是正の項目で紹介した「AWS Config」です。AWS Config のルールを使用して、AWS リソースを評価できるサービスです。AWS のデータ保護の際に使用したいサービスのひとつですので、ぜひ導入を検討してみてください。
まずは「AWS Config を使用する」を押下し、ログインします。
次に、AWS Config のセットアップを行います。項目を確認し、「確認」ボタンを押下してください。
セットアップが完了すると、ダッシュボード画面に遷移します。リソースが存在する場合は、準拠されたルールや違反のあるルール、 違反しているリソースを確認できます。
設定画面では、AWS Config に関する諸設定を行うことができます。随時チェックを行えるよう、レコーダーは「編集」ボタンを押下し、「記録を有効化」にチェックを入れましょう。(下記確認画面では「記録はオン」と表示されます。)
AWS Config を使用した AWS リソースの評価には、AWS Config で定義したルールが不可欠です。そこで、AWS Config を操作して実際にルールを追加してみました。
まずはダッシュボードから「ルール」の画面に遷移します。ルールを追加する際は、右側の「ルールを追加」を押下します。
「ルールタイプの指定」の画面に遷移しますので、ルールタイプの選択をします。今回は、すでに AWS 内に型が存在しているルールを追加していきます。「AWS によって管理されるルールの追加」を選択し、設定したいルールを「AWS マネージド型ルール」から選択してください。
ルールに関する各項目を確認・編集します。名前等はデフォルトで記入されているので、今回はそのまま使用します。確認・編集が終わったら、「次へ」を押下します。
確認画面に遷移し、問題がなければ「ルールを追加」ボタンを押下します。その後下記の画面に遷移します。正常にルールが追加されました。
AWS データストアで機密データを保護するベストプラクティスと実装方法を紹介しました。日ごろからセキュリティ対策を万全に行い、センシティブなデータをしっかり保護しましょう。
このブログでは、AWS 関連の記事をどんどん公開しております。ご興味のある方はぜひ他の記事もご覧ください。
サーバーレス開発については、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎