

# DynamoDB Detective によるセキュリティのベストプラクティス
<a name="best-practices-security-detective"></a>

以下は、潜在的なセキュリティ上の弱点とインシデントを検出するために役立つ Amazon DynamoDB でのベストプラクティスです。

**AWS CloudTrail を使用した AWS マネージド KMS キーの使用状況モニタリング**  
保管時の暗号化に [AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) を使用している場合、このキーの使用状況が AWS CloudTrail に記録されます。CloudTrail は、アカウントで実行されたアクションをレコードすることで、ユーザーのアクティビティを可視化します。CloudTrail は、リクエストを行ったユーザー、使用されたサービス、実行されたアクション、アクションのパラメータ、AWS のサービスから返されたレスポンス要素など、各アクションに関する重要な情報をレコードします。この情報は、AWS リソースに加えられた変更を追跡し、オペレーション上の問題をトラブルシューティングするサポートになります。CloudTrail を使用すると、社内ポリシーや規制スタンダードへのコンプライアンスが容易になります。  
CloudTrail を使用して、キーの使用状況を監査できます。CloudTrail は、アカウントの AWS API コールおよび関連イベントの履歴を含むログファイルを作成します。これらのログファイルには、統合された AWS サービスを通じて行われたものに加えて、AWS マネジメントコンソール、AWS SDK、およびコマンドラインツールを使用して行われたすべての AWS KMS API リクエストが含まれます。これらのログファイルを使って、KMS が使用された日時、リクエストされたオペレーション、リクエスタの ID、リクエスト元の IP アドレスなどについての情報を取得できます。詳細については、「[AWS CloudTrail を使用した AWS KMS API 呼び出しのログ記録](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)」と「[AWS CloudTrail ユーザーガイド](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)」を参照してください。

**CloudTrail を使用した DynamoDB オペレーションのモニタリング**  
CloudTrail は、コントロールプレーンイベントとデータプレーンイベントの両方をモニタリングできます。コントロールプレーンのオペレーションでは、DynamoDB テーブルを作成および管理できます。また、インデックス、ストリーム、およびテーブルに依存する他のオブジェクトを操作できます。データプレーンオペレーションでは、テーブルのデータで、作成、読み込み、更新、および削除 (*CRUD* とも呼ばれる) アクションを実行できます。一部のデータプレーンオペレーションでも、セカンダリインデックスからデータを読み込むことができます。CloudTrail でデータプレーンイベントのログを有効にするには、CloudTrail でデータプレーン API アクティビティのログを有効にする必要があります。詳細については、「[トレイルのデータイベントのログ記録](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)」を参照してください。  
DynamoDB でアクティビティが発生すると、そのアクティビティはイベント履歴の他の AWS のサービスのイベントと共に CloudTrail イベントにレコードされます。詳細については、「[AWS CloudTrail を使用した DynamoDB オペレーションのログ記録](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/logging-using-cloudtrail.html)」を参照してください。最近のイベントは、AWS アカウントで表示、検索、ダウンロードできます。詳細については、*AWS CloudTrailユーザーガイド*の「[CloudTrail イベント履歴でのイベントの表示](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)」を参照してください。  
DynamoDB のイベントなど、AWS アカウントのイベントの継続的なレコードについては、[追跡](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)を作成します。証跡により、CloudTrail はログファイルを Amazon Simple Storage Service (Amazon S3) バケットに配信できます。デフォルトでは、コンソールで証跡を作成すると、証跡がすべての AWS リージョンに適用されます。証跡では、AWS パーティションのすべてのリージョンからのイベントがログに記録され、指定した S3 バケットにログファイルが配信されます。さらに、その他の AWS サービスを設定して、CloudTrail ログで収集したデータをより詳細に分析し、それに基づく対応を行うことができます。

**DynamoDB Streams を使用してデータプレーンオペレーションをモニタリングする**  
DynamoDB は AWS Lambda と統合されているため、トリガー (DynamoDB Streams 内のイベントに自動的に応答するコードの一部) を作成できます。トリガーを使用すると、DynamoDB テーブル内のデータ変更に対応するアプリケーションを構築できます。  
テーブルで DynamoDB Streams を有効にした場合、書き込む Lambda 関数にストリームの Amazon リソースネーム (ARN) を関連付けることができます。テーブルの項目が変更されるとすぐに、新しいレコードがテーブルのストリーミングに表示されます。AWS Lambda はストリーミングをポーリングし、新しいストリーミングレコードを検出すると、 Lambda 関数を同期的に呼び出します。Lambda 関数は、通知の送信やワークフローの開始など、指定したアクションを実行できます。  
例については、「[チュートリアル: Amazon DynamoDB Streams で AWS Lambda を使用する](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb-example.html)」を参照してください。この例では、DynamoDB イベント入力を受け取り、それに含まれるメッセージを処理して、受信イベントデータの一部を Amazon CloudWatch Logs に書き込みます。

** を使用した での DynamoDB 設定のモニタリングAWS Config**  
[AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) を使用すると、AWS リソースの設定変更を継続的にモニタリングおよびレコードできます。また、AWS Config を使用して AWS リソースのインベントリも作成できます。以前の状態からの変更が検出されると、Amazon Simple Notification Service (Amazon SNS) 通知が配信されるので、内容を確認してアクションを実行できます。「[コンソールを使用して AWS Config を設定する](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)」のガイダンスに従い、DynamoDB リソースタイプが含まれていることを確認します。  
設定変更と通知を Amazon SNS トピックにストリーミングするように AWS Config を設定できます。例えば、リソースの更新時に E メールアドレスに通知が送信されれば、変更を確認できます。AWS Config でカスタムルールまたはマネージドルールを適用してリソースを評価したときにも通知を受け取ることができます。  
例については、*AWS Config デベロッパーガイド*の「[AWS Config が Amazon SNS トピックに送信する通知](https://docs.aws.amazon.com/config/latest/developerguide/notifications-for-AWS-Config.html)」を参照してください。

**AWS Config ルール を使用した  での DynamoDB コンプライアンスのモニタリング**  
AWS Config は、リソースで発生する設定変更を継続的に追跡し、これらの変更がルールの条件に違反していないかどうかをチェックします。リソースがルールに違反している場合、AWS Config はリソースとルールに非準拠を示す [noncompliant] のフラグを付けます。  
AWS Config を使用してリソースの設定を評価することで、自社プラクティス、業界ガイドライン、および規制に対するリソース設定の準拠状態を確認できます。AWS Config は、[AWS マネージドルール](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html)を提供しますが、これは事前定義されているカスタマイズ可能なルールで、AWS Config はこのルールを使用して AWS リソースが一般的なベストプラクティスに準拠しているか評価します。

**識別とオートメーションのために DynamoDB リソースにタグを付ける**  
AWS のリソースにメタデータをタグ付け形式で割り当てることができます。各タグは、カスタマー定義のキーと値 (オプション) で構成されるシンプルなラベルです。タグを使用すると、リソースの管理、検索、フィルターが容易になります。  
タグ付けを行うと、グループ化されたコントロールを実装できます。タグには固有のタイプはありませんが、 用途、所有者、環境などの基準でリソースを分類できます。次に例をいくつか示します。  
+ セキュリティ — 暗号化などの要件を決定するために使用されます。
+ 機密性 — リソースがサポートするデータ機密性レベルの識別子。
+ 環境 — 開発、テスト、本番稼働用インフラストラクチャを区別するために使用されます。
詳細については、「[AWS タグ付け戦略](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/)」および「[DynamoDB のタグ付け](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html)」を参照してください。

**AWS Security Hub CSPM を使用して、セキュリティのベストプラクティスに関連する Amazon DynamoDB の使用状況をモニタリングします。**  
Security Hub CSPM は、セキュリティコントロールを使用してリソース設定とセキュリティ標準を評価し、お客様がさまざまなコンプライアンスフレームワークに準拠できるようサポートします。  
Security Hub CSPM を使用して DynamoDB リソースを評価する方法の詳細については、「*AWS Security Hub CSPM ユーザーガイド*」の「[Amazon DynamoDB コントロール](https://docs.aws.amazon.com/securityhub/latest/userguide/dynamodb-controls.html)」を参照してください。