Amazon RDS のセキュリティ

Amazon RDS のセキュリティ機能の詳細

Amazon RDS は、Amazon Aurora PostgreSQL 互換エディションAmazon Aurora MySQL 互換エディションRDS for PostgreSQLRDS for MySQLRDS for MariaDBRDS for SQL ServerRDS for OracleRDS for Db2 の 8 つの一般的なデータベースエンジンから選択できるマネージド型リレーショナルデータベースサービスです。

Amazon RDS と Amazon Aurora には、データが安全に保存され、アクセスされるようにする一連の機能が用意されています。データベースを Amazon Virtual Private Cloud (VPC) で実行して、ネットワークレベルで分離します。セキュリティグループを使用して、どの IP アドレスまたは Amazon EC2 インスタンスがデータベースに接続できるかを制御します。この組み込みのファイアウォールは、指定したルールを介したデータベースアクセス以外のアクセスを防ぎます。

AWS Identity and Access Management (IAM) ポリシーを使用して、Amazon RDS リソースを管理できるユーザーを決定する許可を割り当てます。データベースがローカルネットワーク上にある場合と同様に、データベースエンジンのセキュリティ機能を使用して、データベースにログインできるユーザーを制御します。フェデレーテッドなアクセスのため、データベースのユーザーを IAM ロールにマップすることもできます。

転送中のデータを暗号化するには、Secure Socket Layer / Transport Layer Security (SSL/TLS) 接続を使用します。Amazon Key Management Service (KMS) を使用して、データベースストレージと保管中のバックアップを暗号化します。Database Activity Streams を使用して、データベースアクティビティを監視し、パートナーのデータベースセキュリティアプリケーションと統合します。

Encryption of Data at Rest (保管中のデータの暗号化)

Amazon RDS は、AWS Key Management Service (KMS) を介して管理するキーを使って、データベースを暗号化します。Amazon RDS 暗号化を使用して実行するデータベースインスタンスでは、基盤となるストレージに保管されるデータが、自動バックアップ、リードレプリカ、スナップショットとして暗号化されます。Amazon RDS 暗号化では、業界標準の AES-256 暗号化アルゴリズムを使用して、Amazon RDS インスタンスをホストするサーバー上のデータを暗号化します。

Amazon RDS は、Transparent Data Encryption (TDE) for SQL Server (SQL Server エンタープライズエディションとスタンダードエディション) と Oracle (Oracle エンタープライズエディションの Oracle Advanced Security オプション) もサポートしています。TDE では、データベースサーバーはストレージに書き込まれる前にデータを自動的に暗号化し、ストレージから読み取られるときにデータを自動的に復号化します。

転送中のデータの暗号化

SSL/TLS を使用してアプリケーションと DB インスタンス間の通信を暗号化します。DB インスタンスをプロビジョニングすると、Amazon RDS は SSL 証明書を作成し、その証明書をインスタンスにインストールします。MySQL の場合、接続を暗号化するために --ssl_ca パラメータを使用して mysql クライアントを起動し、パブリックキーを参照します。SQL Server の場合、パブリックキーをダウンロードし、証明書を Windows オペレーティングシステムにインポートします。RDS for Oracle は、DB インスタンスで Oracle のネイティブネットワーク暗号化を使用します。ネイティブネットワーク暗号化オプションをオプショングループに追加し、そのオプショングループを DB インスタンスに関連付けるだけです。暗号化された接続が確立されたら、DB インスタンスとお客様のアプリケーション間で転送されるデータは、転送中に暗号化されるようになります。DB インスタンスに対して、暗号化された接続のみを受け付けるよう要求することもできます。

アクセスコントロール

Amazon RDS は AWS Identity and Access Management (IAM) と統合されており、お客様の AWS IAM ユーザーおよびグループが特定のリソース (DB インスタンス、DB スナップショット、DB パラメータグループ、DB イベントサブスクリプション、DB オプショングループなど) で実行可能なアクションを制御できます。さらに、リソースにはタグを付けることができ、同じタグ (およびタグの値) を持つリソースグループで IAM ユーザーおよびグループが実行可能なアクションを制御できます。IAM 統合の詳細については、IAM データベース認証のドキュメントを参照してください。

Amazon RDS リソースにタグを付けて、同じタグおよび関連付けられた値を持つリソースグループで IAM ユーザーおよびグループが実行可能なアクションを制限できます。例えば、デベロッパーが "Development" データベースインスタンスを変更できるものの、"Production" データベースインスタンスを変更できるのはデータベース管理者のみにするように IAM ルールを設定できます。

Amazon RDS 内で DB インスタンスを最初に作成するときは、プライマリユーザーアカウントを作成します。このアカウントは、DB インスタンスへのアクセスを制御するために Amazon RDS のコンテキスト内でのみ使用されます。プライマリユーザーアカウントは、すべてのデータベース権限を有し、DB インスタンスにログオンできるネイティブデータベースユーザーアカウントです。DB インスタンスの作成時に、各 DB インスタンスと関連付けたいプライマリユーザー名とパスワードを指定することができます。一旦 DB インスタンスを作成すると、プライマリユーザー認証情報を使用してデータベースへ接続することができます。後で、追加のユーザーアカウントを作成して、DB インスタンスへアクセスできる人を制限することができます。

ネットワークの分離とデータベースファイアウォール

Amazon Virtual Private Cloud (VPC) を使用すると、お客様の DB インスタンスをお客様ご自身の仮想ネットワーク内で隔離し、業界標準の暗号化 IPSec VPN を使用してお客様の既存の IT インフラストラクチャに接続できます。

Amazon VPC は、使用する IP アドレス範囲をお客様が指定して、DB インスタンスを隔離することができます。既存の IT インフラストラクチャとの接続には業界標準の IPSec VPN が使えます。VPC で Amazon RDS を実行すると、プライベートサブネット内に DB インスタンスを持つことができます。社内ネットワークを VPC に拡張する仮想プライベートゲートウェイを設定して、その VPC 内の Amazon RDS DB インスタンスにアクセスできるようにする方法もあります。詳細については、「Amazon VPC ユーザーガイド」をご参照ください。Amazon VPC 内に展開した DB インスタンスには、インターネットからアクセスできるだけでなく、VPN またはパブリックサブネットで起動できる踏み台ホストを介して VPC 以外にある Amazon EC2 インスタンスからもアクセスできます。踏み台ホストを使用するには、SSH の踏み台として動作する EC2 インスタンスを使用してパブリックサブネットを設定する必要があります。このパブリックサブネットには、SSH ホストを介してトラフィックを制御できるインターネットゲートウェイまたはルーティングルールが必要です。また、その SSH ホストから Amazon RDS DB インスタンスのプライベート IP アドレスに要求を転送できる必要があります。DB セキュリティグループを使用すると、Amazon VPC 内の DB インスタンスを保護できます。また、各サブネットに出入りするネットワークトラフィックは、ネットワーク ACL を使用して許可または拒否することができます。IPsec VPN 接続を介する Amazon VPC へのすべてのネットワークトラフィックの出入りは、ネットワークファイアウォール、侵入検知システムなど、オンプレミスのセキュリティインフラストラクチャによって監視することができます。

Database Activity Streams

外部からのセキュリティ脅威以外にも、マネージドデータベースにはデータベース管理者 (DBA) が内部リスクに対する保護を行う必要があります。Database Activity Streams は、現在 Amazon Aurora と Amazon RDS for Oracle でサポートされており、リレーショナルデータベース内のデータベースアクティビティのリアルタイムデータストリームを提供します。サードパーティーのデータベースアクティビティのモニタリングツールと統合すると、データベースアクティビティをモニタリングおよび監査してデータベースを保護し、コンプライアンスと規制要件に適合することができます。

Database Activity Streams は、データベースアクティビティストリームへの DBA アクセスを制御する保護モデルを実装することにより、データベースを内部の脅威から保護します。したがって、データベースアクティビティストリームの収集、送信、保存、およびその後の処理は、データベースを管理する DBA のアクセス権の範囲外にあります。

ストリームは、データベースに代わって作成された Amazon Kinesis データストリームにプッシュされます。そうすることで、Kinesis Data Firehose から、データベースアクティビティストリームを Amazon CloudWatch や、IBM Security Guardium などのコンプライアンス管理用のパートナーアプリケーションで利用できるようになります。こうしたパートナーのアプリケーションでは、データベースアクティビティストリームの情報を使用してアラートを生成したり、Amazon Aurora データベース上のすべてのアクティビティを監査したりできます。

PostgreSQL および MySQL 互換エディションの Aurora で Database Activity Streams を使用する方法の詳細については、こちらのドキュメントページで、Amazon RDS for Oracle については、こちらのドキュメントページをご覧ください。

コンプライアンス

Amazon RDS は、お客様が適用法および規制要件への準拠を評価、準拠、実証するために使用できる強力なコンプライアンスフレームワーク、高度なツール、セキュリティ対策をお客様に提供することにコミットしています。お客様は、AWS 責任共有モデルを確認し、Amazon RDS が責任を負う分野とお客様が責任を負う分野を把握する必要があります。また、お客様は AWS Artifact を使用して RDS の監査レポートにアクセスし、管理責任の評価を行うこともできます。

詳細については、AWS コンプライアンスページをご覧ください。

よくある質問

Amazon RDS では、お客様のデータベースインスタンスの設定と使用率メトリクスを分析して、ベストプラクティスのガイダンスを提供します。レコメンデーションには、セキュリティ、暗号化、IAM、VPC などの分野が含まれます。利用可能な推奨を確認し、推奨されたアクションを直ちに行ったり、次回のメンテナンス時間帯にスケジュール設定したり、何も行わずに終了したりできます。

Amazon VPC を使用すると、AWS クラウドの分離したプライベートセクションに仮想ネットワーキング環境を作成できます。その環境では、プライベート IP アドレスの範囲、サブネット、ルーティングテーブル、ネットワークゲートウェイなど、さまざまな要素について全面的な制御を実行できます。Amazon VPC では、仮想ネットワークトポロジを定義し、従来の IP ネットワークと同じようにネットワーク設定をカスタマイズできるため、独自のデータセンターで運用できます。

VPC を利用できる方法の 1 つは、プライベートサブネット内のパブリックにアクセスできないバックエンドサーバーを保守しながら、パブリックに公開されているウェブアプリケーションを実行する場合です。インターネットにアクセスできるウェブサーバ用にパブリック側のサブネットを作成し、インターネットアクセスできないプライベート側のサブネットにバックエンド Amazon RDS DB インスタンスを配置することができます。Amazon VPC の詳細については、Amazon Virtual Private Cloud ユーザーガイドをご覧ください。

2013 年 12 月 4 日以前に作成した AWS アカウントでは、Amazon Elastic Compute Cloud (EC2)-Classic 環境で Amazon RDS を実行できる場合があります。Amazon RDS の基本機能は EC2-Classic を使用するか、EC2-VPC を使用するかにかかわらず同じです。Amazon RDS は、DB インスタンスが VPC 内外どちらにデプロイされるかにかかわらず、バックアップ、ソフトウェアのパッチ適用、自動障害検出、リードレプリカ、および復元を管理します。EC2-Classic と EC2-VPC の相違点の詳細については、EC2 のドキュメントを参照してください。

DB サブネットグループとは、VPC 内で Amazon RDS DB インスタンス用に指定するサブネットのコレクションです。各 DB サブネットグループには、特定の Region 内のアベイラビリティゾーンごとに 1 つ以上のサブネットを指定する必要があります。VPC 内に DB インスタンスを作成するときに、DB サブネットグループを選択する必要があります。選択すると、Amazon RDS は、その DB サブネットグループと設定した Availability Zone を使用し、サブネットとそのサブネット内の IP アドレスを選択します。Amazon RDS によって Elastic Network Interface が作成され、その IP アドレスを持つ DB インスタンスに関連付けられます。

基になる IP アドレスは変わる可能性があるため (フェイルオーバーなど)、DB インスタンスに接続するときは DNS 名を使用することを強くお勧めします。

Multi-AZ 配備の場合、Region 内のすべての Availability Zone 用にサブネットを定義すると、必要に応じて Amazon RDS で別の Availability Zone に新しいスタンバイを作成できるようになります。Single-AZ 配備の場合も、どこかの時点で Multi-AZ 配備に変換する場合に備えてこのように定義する必要があります。

このプロセスの詳細な手順については、Amazon RDS ユーザーガイドの「VPC に DB インスタンスを作成する」を参照してください。

DB インスタンスのアクセスを制御する別の方法について詳しくは、Amazon RDS ユーザーガイドのセキュリティグループを参照してください。

VPC 内に展開した DB インスタンスには、同じ VPC に展開した EC2 インスタンスからアクセスできます。Elastic IP が関連付けられたパブリックサブネット内にこのような EC2 インスタンスをデプロイしている場合は、インターネットを介して EC2 インスタンスにアクセスできます。VPC 内に展開した DB インスタンスには、インターネットからアクセスできるだけでなく、VPN またはパブリックサブネットで起動できる踏み台ホストを介して VPC 以外にある EC2 インスタンスからアクセスすることができます。また、Amazon RDS の Publicly Accessible オプションを使用してアクセスすることもできます。

  • 踏み台ホストを使用するには、SSH の踏み台として機能する EC2 インスタンスでパブリックサブネットを設定する必要があります。このパブリックサブネットには、トラフィックを SSH ホスト経由で転送できるようにするインターネットゲートウェイとルーティングルールが必要です。SSH ホストは次に、Amazon RDS DB インスタンスのプライベート IP アドレスにリクエストを転送する必要があります。
  • パブリックな接続を使用するには、Publicly Accessible オプションを yes に設定して DB インスタンスを作成します。Publicly Accessible をアクティブにすると、デフォルトにより、VPC の外部から VPC 内の DB インスタンスでアクセス可能になります。つまり、DB インスタンスへのアクセスを許可するように VPN または踏み台ホストを構成する必要はありません。 

社内ネットワークを VPC に拡張する VPN ゲートウェイを設定して、その VPC 内の Amazon RDS DB インスタンスにアクセスできるようにする方法もあります。詳細については、Amazon VPC ユーザーガイドを参照してください。

基になる IP アドレスは変わる可能性があるので(フェイルオーバーなどの理由で)、DB インスタンスに接続するときは DNS 名を使用することを強くお勧めします。

DB インスタンスが VPC 内に存在しない場合には、AWS マネジメントコンソールを使用して、VPC 内に DB インスタンスを簡単に移行できます。詳細については、Amazon RDS ユーザーガイドをご覧ください。VPC 以外にある DB インスタンスのスナップショットを作成して、VPC に復元できます。それには、使用する DB サブネットグループを指定します。または、「特定時点への復元」オペレーションを実行することもできます。

VPC 内から VPC 以外への DB インスタンスの移行はサポートされていません。セキュリティ上の理由から、VPC 内の DB インスタンスの DB スナップショットを VPC 以外の場所に復元することはできません。「特定時点への復元」機能も同様です。 

ルーティングテーブルと VPC 内のネットワーキング ACL を変更して、VPC 内のクライアントインスタンスから DB インスタンスに到達できるようにする必要があります。 マルチ AZ 配置の場合は、フェイルオーバー後に、クライアントの EC2 インスタンスと Amazon RDS DB インスタンスは異なるアベイラビリティゾーンに属する可能性があります。そのため、AZ 間の通信が可能になるようにネットワーキング ACL を設定する必要があります。

既存の DB サブネットグループを更新して、既存のアベイラビリティーゾーン用、または DB インスタンスの作成後に追加した新しいアベイラビリティーゾーン用にサブネットを追加できます。 既存の DB サブネットグループからサブネットを削除すると、サブネットグループから削除される特定の AZ で実行されているインスタンスが利用できなくなります。詳細については、Amazon RDS ユーザーガイドを参照してください。

Amazon RDS の使用を始めるには、AWS デベロッパーアカウントが必要です。Amazon RDS のサインアップの前にアカウントを持っていない場合、サインアップ プロセスの開始時にアカウントを作成するよう要求されます。プライマリユーザー アカウントは、AWS 開発者アカウントとは異なっており、DB インスタンスへのアクセスをコントロールするため、Amazon RDS の範囲内でのみ使用します。プライマリユーザー アカウントは、DB インターフェイスへの接続に使用できる固有のデータベース ユーザー アカウントです。 

DB インスタンスの作成時に、各 DB インスタンスと関連付けたいプライマリユーザー名とパスワードを指定することができます。一旦 DB インスタンスを作成すると、プライマリユーザー証明書を使用してデータベースへ接続することができます。後で、追加のユーザー アカウントを作成したい場合があるので、DB インスタンスへアクセスできる人を制限することができます。

MySQL の場合、プライマリユーザーのデフォルトの特権は、create、drop、references、event、alter、delete、index、insert、select、update、create temporary tables、lock tables、trigger、create view、show view、alter routine、create routine、execute、trigger、create user、process、show databases、grant option です。

Oracle の場合、プライマリユーザーには「dba」の役割が付与されます。プライマリユーザーは、ほとんどの役割に関連付けられた特権を継承します。制限された特権のリスト、およびその特権を必要とする管理タスクを実行するための代替方法については、Amazon RDS ユーザーガイドをご覧ください。

SQL Server の場合は、データベースを作成したユーザーに db_owner ロールが付与されます。制限された特権のリスト、およびその特権を必要とする管理タスクを実行するための代替方法については、Amazon RDS ユーザーガイドをご覧ください。

いいえ、お客様がリレーショナルデータベースを管理するときと同じ方法ですべて機能します。

はい。インターネットを介してデータベースにアクセスする機能は、セキュリティグループを設定して手動で有効にする必要があります。特定の IP、IP 範囲、またはお客様自身のデータセンターにあるサーバーに該当するサブネットに対してのみアクセスを認可することができます。

はい、このオプションはすべての Amazon RDS エンジンでサポートされています。 Amazon RDS は、各 DB インスタンスに対して SSL/TLS 証明書を生成します。暗号化された接続が確立されたら、DB インスタンスとお客様のアプリケーション間で転送されるデータは、転送中に暗号化されるようになります。SSL はセキュリティ上の利点を提供しますが、SSL/TLS 暗号化がかなりの計算量を必要とするオペレーションであり、お客様のデータベース接続レイテンシーが増加しますのでご注意ください。また、Amazon RDS 内での SSL/TLS サポートは、アプリケーションと DB インスタンス間での接続暗号化のためにあることにご注意ください。これは DB インスタンスそのものの認証には使用しないでください。

暗号化された Amazon RDS との接続の確立についての詳細は、Amazon RDS の MySQL ユーザーガイドMariaDB ユーザーガイドPostgreSQL ユーザーガイドまたは Oracle ユーザーガイドをご参照ください。

Amazon RDS では、AWS Key Management Service (KMS) で管理されるキーを使って、すべてのデータベースエンジンで保管時の暗号化をサポートしています。Amazon RDS 暗号化を使用して実行するデータベースインスタンスでは、基盤となるストレージに保管されるデータが、自動バックアップ、リードレプリカ、スナップショットとして暗号化されます。暗号化と復号は透過的に処理されます。Amazon RDS での KMS の使用に関する詳細は、Amazon RDS ユーザーガイドを参照してください。

また、以前に暗号化されていない DB インスタンスや DB クラスターに暗号化を追加するには、DB スナップショットを作成してからそのコピーを作成し、KMS 暗号化キーを指定します。こうすることで、この暗号化されたスナップショットから暗号化された DB インスタンスまたは DB クラスターを復元できます。

Amazon RDS for Oracle および Amazon RDS for SQL Server では、それぞれのエンジンの Transparent Data Encryption (TDE) テクノロジーがサポートされます。詳細については、Amazon RDS ユーザーガイドの OracleSQL Server を参照してください。

いいえ、Amazon RDS 上の Oracle インスタンスを AWS CloudHSM と統合することはできません。AWS CloudHSM で透過的なデータ暗号化 (TDE) を使用するには、Oracle データベースを Amazon EC2 にインストールする必要があります。

Amazon RDS リソースに対して AWS IAM ユーザーとグループが実行できるアクションを制御できます。制御するには、ユーザーとグループに適用している AWS IAM ポリシーの Amazon RDS リソースを参照します。AWS IAM ポリシーで参照できる Amazon RDS リソースには、DB インスタンス、DB スナップショット、リードレプリカ、DB セキュリティグループ、DB オプショングループ、DB パラメータグループ、イベントサブスクリプション、DB サブネットグループが含まれます。 

また、これらのリソースにタグを付けて、追加のメタデータをリソースに追加できます。タグを使用すると、リソースを分類し (「開発用」 DB インスタンス、「本稼働用」 DB インスタンス、「テスト用」 DB インスタンスなど)、同じタグが設定されたリソースに対して適用するアクセス許可を登録した AWS IAM ポリシーを作成することができます。詳細については、Amazon RDS リソースのタグ付けを参照してください。

はい。 AWS CloudTrail は、アカウントに対する AWS API コールを記録し、ログファイルを配信するウェブサービスです。CloudTrail で生成される AWS API の呼び出し履歴を利用して、セキュリティの分析、リソース変更の追跡、およびコンプライアンスの監査を行うことができます。 

はい、Amazon RDS データベースは HIPAA に適格ですので、これらを使って HIPAA 準拠のアプリケーションを作り、ヘルスケア関連情報を格納できます。こうした情報には AWS の Business Associate Agreement (BAA) で保護された医療情報 (PHI) も含みます。

既に BAA を締結している場合は、BAA の適用を受けているアカウントでこのサービスの使用を開始するために何も行う必要はありません。AWS との BAA を締結していない場合や、AWS の HIPAA 準拠のアプリケーションについてご不明な点がある場合は、
担当の AWS アカウントマネージャーまでお問い合わせください。

  • Imperva

    Imperva のデータ保護は、AWS Database Activity Stream (DAS) イベント (およびその他のさまざまな AWS ソース) からフィードを取得し、目的に合わせた強力な分析を通じてセキュリティコンテキストを追加します。Imperva は、アカウントの侵害や内部脅威の兆候となる可能性のある悪意のあるアクティビティ、回避的な行動、権限の悪用を検出します。その他の利点としては、インタラクティブなデータ探索、すぐに使える便利なオートメーション、プレイブックによる組み込みレスポンスなどがあります。これにより、TCO を削減し、ほとんどの企業がクラウドに移行する際に直面するスキルギャップを埋めることができます」– Imperva のデータセキュリティ担当 SVP 兼 GM、Dan Neault 氏。

    詳細については、Imperva データセキュリティページをご覧ください。 »
  • IBM

    IBM Security® Guardium® Data Protection は、データベースからビッグデータ、ハイブリッド/クラウド、ファイルシステムなど、あらゆる環境で重要なデータのセキュリティ、プライバシー、整合性を確保するのに役立ちます。AWS Database Activity Streams (DAS) と統合できることを嬉しく思います。この統合により、両社の顧客はデータベースアクティビティをほぼリアルタイムで可視化できるようになり、脅威を迅速に特定し、オンプレミスとクラウド環境にわたってデータ保護に対して一貫した戦略的なアプローチを取ることができるようになります」– IBM Security のデータ保護ポートフォリオ担当オファリングマネージャー、Benazeer Daruwalla 氏。

    詳細については、IBM セキュリティーページをご覧ください。 »