Amazon DynamoDB のインフラストラクチャセキュリティ
マネージドサービスとして、Amazon DynamoDB は、AWS Well-Architected フレームワークにあるインフラストラクチャ保護で説明されている AWS グローバルネットワークセキュリティ手順によって保護されます。
AWS が公開した API コールを使用して、ネットワーク経由で DynamoDB にアクセスします。クライアントは TLS (Transport Layer Security) バージョン 1.2 または 1.3 を使用できます。また、Ephemeral Diffie-Hellman (DHE) や Elliptic Curve Ephemeral Diffie-Hellman (ECDHE) などの Perfect Forward Secrecy (PFS) を使用した暗号スイートもサポートしている必要があります。これらのモードは、Java 7 以降など、最近のほとんどのシステムでサポートされています。また、リクエストは、アクセスキー ID と、IAM プリンシパルに関連付けられているシークレットアクセスキーを使用して署名する必要があります。または、AWS Security Token ServiceAWS STSを使用して、一時的なセキュリティ認証情報を生成し、リクエストに署名することもできます。
DynamoDB 用の 仮想プライベートクラウド (VPC) エンドポイントを使用することで、VPC 内の Amazon EC2 インスタンスがパブリックインターネットにさらされることなく、プライベート IP アドレスを使用して DynamoDB にアクセスできるようになります。詳細については、「」を参照してくださいAmazon VPC エンドポイントを使用して DynamoDB にアクセスする
Amazon VPC エンドポイントを使用して DynamoDB にアクセスする
セキュリティ上の理由から、多くの AWS ユーザーがアプリケーションを Amazon Virtual Private Cloud 環境 (Amazon VPC) 内で実行しています。Amazon VPC を使用すると、Amazon EC2 インスタンスを仮想プライベートクラウドで作成できます。そのため、パブリックインターネットなどの他のネットワークから論理的に分離されます。Amazon VPC を使用すると、IP アドレスの範囲、サブネット、ルーティングテーブル、ネットワークゲートウェイ、セキュリティ設定を適切に管理できます。
注記
2013 年 12 月 4 日以降に AWS アカウントを作成した場合は、各 AWS リージョンにデフォルトの VPC が用意されています。デフォルトの VPC は、使用できる状態になっています。追加で設定手順を実行することなく、すぐに利用開始できます。
デフォルト VPC の詳細については、Amazon VPC ユーザーガイドの「デフォルト VPC とデフォルトサブネット」を参照してください。
パブリックインターネットにアクセスするには、VPC にインターネットゲートウェイ (VPC をインターネットに接続する仮想ルーター) が必要です。これにより、VPC 内の Amazon EC2 で実行されているアプリケーションで、Amazon DynamoDB などのインターネットリソースにアクセスすることが可能になります。
デフォルトでは、DynamoDB との通信において、SSL/TLS 暗号化を使用してネットワークトラフィックを保護する HTTPS プロトコルが使用されます。次の図は、VPC 内の Amazon EC2 インスタンスから DynamoDB にアクセスするために、VPC エンドポイントではなくインターネットゲートウェイを使用する例を示しています。

多くのお客様が、パブリックインターネット間のデータ送受信に関して、プライバシーとセキュリティに関する正当な懸念を抱いています。これらの懸念を解決するために、仮想プライベートネットワーク (VPN) を使用して、すべての DynamoDB ネットワークトラフィックをお客様の企業ネットワークのインフラストラクチャ経由でルーティングできます。ただし、このアプローチでは、帯域幅や可用性の課題が生じる場合があります。
DynamoDB 用の VPC エンドポイントでは、これらの課題は軽減されます。DynamoDB 用の VPC エンドポイントを使用すると、VPC 内の Amazon EC2 インスタンスがパブリックインターネットにさらされることなく、プライベート IP アドレスを使用して DynamoDB にアクセスできるようになります。EC2 インスタンス にパブリック IP アドレスは必要ありません。また、VPC にインターネットゲートウェイ、NAT デバイス、仮想プライベートゲートウェイは不要です。DynamoDB へのアクセスを制御するには、エンドポイントのポリシーを使用します。VPC と AWS サービス間のトラフィックは、Amazon ネットワークを離れません。
注記
パブリック IP アドレスを使用する場合でも、AWS でホストされているインスタンスとサービスの間で発生するすべての VPC 通信は、AWS ネットワーク内でのプライベートな通信となります。AWS ネットワークから発信され、送信先が AWS ネットワーク上のパケットは、AWS 中国リージョンとの送受信されるトラフィックを除き、AWS グローバルネットワークに残ります。
DynamoDB 用の VPC エンドポイントを作成する際、リージョン内の DynamoDB エンドポイント (例: dynamodb.us-west-2.amazonaws.com) に対するリクエストはすべて、Amazon ネットワーク内のプライベートの DynamoDB エンドポイントにルーティングされます。VPC 内の EC2 インスタンスで実行されているアプリケーションを変更する必要はありません。エンドポイント名は変わりませんが、DynamoDB へのルートは Amazon ネットワーク内に完全にとどまります。パブリックインターネットにアクセスすることはありません。
次の図は、VPC 内の EC2 インスタンスが VPC エンドポイントを使用して DynamoDB にアクセスする様子を示しています。

詳細については、「チュートリアル: DynamoDB 用の VPC エンドポイントを使用する」を参照してください。
Amazon VPC エンドポイントと DynamoDB の共有
VPC サブネットのゲートウェイエンドポイントから DynamoDB サービスにアクセスできるようにするには、その VPC サブネットに対する所有者アカウントのアクセス許可が必要です。
VPC サブネットのゲートウェイエンドポイントに DynamoDB へのアクセスを許可すると、そのサブネットへのアクセス権を持つすべての AWS アカウントが DynamoDB を使用できます。つまり、VPC サブネット内のすべてのアカウントユーザーは、アクセス権が付与されている対象のすべての DynamoDB テーブルを使用できます。これには、VPC サブネットとは異なるアカウントに関連付けられた DynamoDB テーブルが含まれます。ただし、VPC サブネットの所有者は、独自の裁量により、サブネット内の特定のユーザーに対して、ゲートウェイエンドポイント経由での DynamoDB サービスの使用を制限できます。
チュートリアル: DynamoDB 用の VPC エンドポイントを使用する
このセクションでは、DynamoDB 用の VPC エンドポイントの設定および使用について説明します。
トピック
ステップ 1: Amazon EC2 インスタンスを起動する
このステップでは、デフォルトの Amazon VPC で Amazon EC2 インスタンスを起動します。その後、DynamoDB 用の VPC エンドポイントを作成して使用できます。
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
[Launch Instance] (インスタンスを起動) を選択して、以下を実行します。
ステップ 1: Amazon マシンイメージ (AMI) を選択する
-
AMI のリストの上部で [Amazon Linux AMI] に移動し、[選択] を選びます。
ステップ 2: インスタンスタイプを選択する
-
インスタンスタイプのリストの上部で、[t2.micro] を選択します。
-
[Next: Configure Instance Details] (次のステップ: インスタンスの詳細の設定) を選択します。
ステップ 3: インスタンスの詳細を設定する
-
[ネットワーク] に移動し、デフォルトの VPC を選択します。
[Next: Add Storage] (次の手順: ストレージの追加) をクリックします。
ステップ 4: ストレージを追加する
-
[Next: Tag Instance] を選択してこのステップをスキップします。
ステップ 5: インスタンスをタグ付けする
-
[Next: Configure Security Group] (次のステップ: セキュリティグループの設定) を選択してこのステップをスキップします。
ステップ 6: セキュリティグループを設定する
-
[Select an existing security group] (既存のセキュリティグループの選択) を選択します。
-
セキュリティグループのリストで、[default (デフォルト)] を選択します。これは VPC のデフォルトのセキュリティグループです。
-
[Next: Review and Launch] (次のステップ: 確認と起動) を選択します。
ステップ 7: インスタンス起動の確認
-
[Launch] (起動する) を選択します。
-
-
[Select an existing key pair or create a new key pair] (既存のキーペアを選択するか、新しいキーペアを作成する) ウィンドウで、次のいずれかを実行します。
-
Amazon EC2 キーペアがない場合は、[Create a new key pair] (新しいキーペアの作成) を選択して指示に従います。プライベートキーファイル (.pem ファイル) をダウンロードするよう求められます。このファイルは、後で Amazon EC2 インスタンスにログインする際に必要になります。
-
既存の Amazon EC2 キーペアがすでにある場合は、[Select a key pair] (キーペアの選択) を選択して、リストからキーペアを選択します。Amazon EC2 インスタンスにログインするには、既にプライベートキーファイル (.pem ファイル) が利用可能になっている必要があります。
-
-
キーペアを設定してある場合は、[Launch Instances] (インスタンスの起動) を選択します。
-
Amazon EC2 コンソールのホームページに戻り、起動したインスタンスを選択します。下のペインの [Description] (説明) タブで、インスタンスの [Public DNS] (パブリック DNS) を見つけます。例:
ec2-00-00-00-00.us-east-1.compute.amazonaws.com
。このパブリック DNS 名をメモします。パブリック DNS 名は、このチュートリアル (ステップ 2: Amazon EC2 インスタンスを設定する) の次のステップで必要になります。
注記
Amazon EC2 インスタンスが使用できるようになるまで数分かかります。次のステップに行く前に、[Instance State] (インスタンスの状態) が running
で、その [Status Checks] (ステータスチェック) がすべてパスしていることを確認します。
ステップ 2: Amazon EC2 インスタンスを設定する
Amazon EC2 インスタンスが使用できるようになったら、そのインスタンスにログインして、最初に使用できるように準備できます。
注記
次の手順は、Linux を実行するコンピュータから Amazon EC2 インスタンスに接続していることを想定しています。その他の接続方法については、「Amazon EC2 ユーザーガイド」の「Linux インスタンスへの接続」を参照してください。
-
Amazon EC2 インスタンスへのインバウンド SSH トラフィックを認可する必要があります。これを行うには、新しい EC2 セキュリティグループを作成し、そのセキュリティグループを EC2 インスタンスに割り当てます。
-
ナビゲーションペインで、[Security Groups] を選択します。
-
[Create Security Group (セキュリティグループの作成)] を選択します。[セキュリティグループの作成] ウィンドウで、以下を行います。
-
[Security group name] (セキュリティグループ名) — セキュリティグループの名前を入力します。例:
my-ssh-access
-
[Description] (説明) — セキュリティグループの簡単な説明を入力します。
-
VPC — デフォルトの VPC を選択します。
-
[Security group rules] (セキュリティグループのルール) セクションで、[Add Rule] (ルールの追加) を選択して、次の操作を行います
-
[Type] (タイプ) — SSH を選択します。
-
[Source] (ソース) — My IP を選択します。
-
すべての設定が正しいことを確認したら、[作成] を選択します。
-
-
ナビゲーションペインで、[インスタンス] を選択します。
-
ステップ 1: Amazon EC2 インスタンスを起動する で起動した Amazon EC2 インスタンスを選択します。
-
[Actions] (アクション)、[Networking] (ネットワーキング)、[Change Security Groups] (セキュリティグループの変更) の順に選択します。
-
[Change Security Groups] (セキュリティグループの変更) で、この手順で先に作成したセキュリティグループを選択します (例:
my-ssh-access
)。既存のdefault
のセキュリティグループも選択する必要があります。すべての設定が正しいことを確認したら、[Assign Security Groups] (セキュリティグループの割り当て) を選択します。
-
-
次の例のように、
ssh
コマンドを使用して Amazon EC2 インスタンスにログインします。ssh -i
my-keypair.pem
ec2-user@public-dns-name
プライベートキーファイル (.pem ファイル) とインスタンスのパブリック DNS 名を指定する必要があります。(「ステップ 1: Amazon EC2 インスタンスを起動する」を参照してください)。
ログイン ID は
ec2-user
です。パスワードは不要です。 -
次の例に示すように、AWS 認証情報を設定します。プロンプトが表示されたら、AWS アクセスキー ID、シークレットキー、デフォルトのリージョン名を入力します。
aws configure
AWS Access Key ID [None]:
AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]:us-east-1
Default output format [None]:
これで、DynamoDB 用の VPC エンドポイントを作成する準備ができました。
ステップ 3: DynamoDB 用の VPC エンドポイントを作成する
このステップでは、DynamoDB 用の VPC エンドポイントを作成し、テストを行い正常に動作することを確認します。
-
開始する前に、パブリックエンドポイントを使用して DynamoDB と通信できることを確認します。
aws dynamodb list-tables
出力では、現在所有している DynamoDB テーブルのリストが表示されます。(テーブルがない場合、リストは空になります。)。
-
DynamoDB が、現在の AWS リージョンで VPC エンドポイントを作成するために利用可能なサービスであることを確認します。(コマンドは太字で示され、その後に出力例が続きます。)
aws ec2 describe-vpc-endpoint-services
{ "ServiceNames": [ "com.amazonaws.us-east-1.s3", "com.amazonaws.us-east-1.dynamodb" ] }
出力例では、DynamoDB が利用可能なサービスの 1 つであるため、VPC エンドポイントの作成を続行できます。
-
VPC 識別子を決定します。
aws ec2 describe-vpcs
{ "Vpcs": [ { "VpcId": "vpc-0bbc736e", "InstanceTenancy": "default", "State": "available", "DhcpOptionsId": "dopt-8454b7e1", "CidrBlock": "172.31.0.0/16", "IsDefault": true } ] }
出力例では、VPC ID は
vpc-0bbc736e
です。 -
VPC エンドポイントを作成します。
--vpc-id
パラメータで、前のステップの VPC ID を指定します。--route-table-ids
パラメータを使用して、エンドポイントをルートテーブルに関連付けます。aws ec2 create-vpc-endpoint --vpc-id vpc-0bbc736e --service-name com.amazonaws.us-east-1.dynamodb --route-table-ids rtb-11aa22bb
{ "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [ "rtb-11aa22bb" ], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }
-
VPC エンドポイント経由で DynamoDB にアクセスできることを確認します。
aws dynamodb list-tables
必要に応じて、DynamoDB 用の他の AWS CLI コマンドを試すことができます。詳細については、AWS CLI コマンドリファレンスを参照してください。
ステップ 4: (オプション) クリーンアップする
このチュートリアルで作成したリソースを削除する場合は、次の手順に従ってください。
DynamoDB 用の VPC エンドポイントを削除するには
-
Amazon EC2 インスタンスにログインします。
-
VPC エンドポイント ID を決定します。
aws ec2 describe-vpc-endpoints
{ "VpcEndpoint": { "PolicyDocument": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"*\",\"Resource\":\"*\"}]}", "VpcId": "vpc-0bbc736e", "State": "available", "ServiceName": "com.amazonaws.us-east-1.dynamodb", "RouteTableIds": [], "VpcEndpointId": "vpce-9b15e2f2", "CreationTimestamp": "2017-07-26T22:00:14Z" } }
出力例では、VPC エンドポイント ID は
vpce-9b15e2f2
です。 -
VPC エンドポイントを削除します。
aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-9b15e2f2
{ "Unsuccessful": [] }
空の配列
[]
は成功を示します (失敗したリクエストはありませんでした)。
Amazon EC2 インスタンスを終了するには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[インスタンス] を選択します。
-
Amazon EC2 インスタンスを選択します。
-
[Actions]、[Instance State]、[Terminate] の順に選択します。
-
確認ウィンドウで、[Yes, Terminate] (はい、終了します) を選択します。