Amazon Aurora MySQL でのセキュリティ - Amazon Aurora

Amazon Aurora MySQL でのセキュリティ

Amazon Aurora MySQL のセキュリティは次の 3 つのレベルで管理されます。

  • Aurora MySQL DB クラスターと DB インスタンスに対する Amazon RDS 管理アクションを実行できるユーザーを管理するには、AWS Identity and Access Management (IAM) を使用します。IAM 認証情報を使用して AWS に接続している場合、AWS アカウントには、Amazon RDS の管理オペレーションを実行するためのアクセス許可を付与する IAM ポリシーが必要です。詳細については、「Amazon Aurora での Identity and Access Management」を参照してください。

    IAM を使用して Amazon RDS コンソールにアクセスする場合は、まず、IAM ユーザーの認証情報を使用して AWS Management Console にサインオンする必要があります。次に、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) に移動します。

  • Aurora MySQL DB クラスターは Amazon Virtual Private Cloud (VPC) に作成する必要があります。VPC 内の Aurora MySQL DB クラスター用の DB インスタンスのエンドポイントとポートに対して接続を開くことができるデバイスと Amazon EC2 インスタンスを制御するには、VPC セキュリティグループを使用します。これらのエンドポイントとポート接続は、Secure Sockets Layer (SSL) を使用して作成できます。さらに、会社のファイアウォールルールでも、社内のいずれのデバイスが DB インスタンスへの接続を開くことができるかを制御できます。VPC の詳細については、「Amazon Virtual Private Cloud VPC および Amazon Aurora」を参照してください。

    サポートされている VPC テナンシーは、Aurora MySQL DB クラスターで使用している DB インスタンスクラスによって異なります。default VPC テナントでは、VPC は共有ハードウェアで実行されます。dedicated VPC テナンシーでは、VPC は専有のハードウェアインスタンスで実行されます。db.t2 DB インスタンスクラスでは、デフォルト VPC テナンシーのみがサポートされています。その他すべての Aurora MySQL DB インスタンスクラスでは、デフォルトおよび専用 VPC テナンシーの両方がサポートされています。

    インスタンスクラスの詳細については、「Aurora DB インスタンスクラス」を参照してください。default および dedicated VPC テナントの詳細については、Amazon Elastic Compute Cloud ユーザーガイドの「ハードウェア専有インスタンス」を参照してください。

  • Amazon Aurora MySQL DB クラスターへのログインとアクセス権限を認証するには、以下の方法のいずれかを使用するか、複数を組み合わせて使用します。

    • MySQL のスタンドアロンインスタンスの場合と同じ方法を使用できます。

      CREATE USERRENAME USERGRANTREVOKESET PASSWORD などのコマンドは、オンプレミスデータベースでの方法と同様に、データベーススキーマテーブルを直接変更します。詳細については、MySQL ドキュメントの「アクセスコントロールおよびアカウントマネジメント」を参照してください。

    • IAM データベース認証を使用することもできます。

      IAM データベース認証を使用する場合は、IAM ユーザーと IAM ロールのいずれかと認証トークンを使用して、DB クラスターを認証します。認証トークン は、署名バージョン 4 の署名プロセスを使用して生成されている一意の値です。IAM データベース認証では、同一の認証情報を使用して AWS リソースおよびデータベースへのアクセスを制御できます。詳細については、「 の IAM データベース認証」を参照してください。

注記

詳細については、「Amazon Aurora でのセキュリティ」を参照してください。

Amazon Aurora MySQL でのマスターユーザー特権

Amazon Aurora MySQL DB インスタンスを作成すると、マスターユーザーには以下のデフォルト権限が付与されます。

  • ALTER

  • ALTER ROUTINE

  • CREATE

  • CREATE ROUTINE

  • CREATE TEMPORARY TABLES

  • CREATE USER

  • CREATE VIEW

  • DELETE

  • DROP

  • EVENT

  • EXECUTE

  • GRANT OPTION

  • INDEX

  • INSERT

  • LOAD FROM S3

  • LOCK TABLES

  • PROCESS

  • REFERENCES

  • RELOAD

  • REPLICATION CLIENT

  • REPLICATION SLAVE

  • SELECT

  • SHOW DATABASES

  • SHOW VIEW

  • TRIGGER

  • UPDATE

各 DB クラスターに管理サービスを提供するために、DB インスタンスの作成時に rdsadmin ユーザーが作成されます。rdsadmin アカウントの削除、名前の変更、パスワードの変更、または権限の変更を行おうとすると、エラーになります。

Aurora MySQL DB クラスターの管理では、標準的なコマンド killkill_query の使用は制限されています。Aurora MySQL DB インスタンスのユーザーセッションまたはクエリを終了するには、Amazon RDS の rds_kill コマンドと rds_kill_query コマンドを代わりに使用します。

注記

データベースインスタンスおよびスナップショットの暗号化は、中国 (寧夏) リージョンではサポートされていません。

Aurora MySQL DB クラスターでの SSL/TLS の使用

Amazon Aurora MySQL DB クラスターは、アプリケーションからの Secure Sockets Layer (SSL) および Transport Layer Security (TLS) 接続を、RDS for MySQL DB インスタンスと同じプロセスと公開鍵を使用してサポートします。

Amazon RDS によって、Amazon RDS によるインスタンスのプロビジョニング時、SSL/TLS 証明書が作成され、DB インスタンスにインストールされます。これらの証明書は認証局によって署名されます。SSL/TLS 証明書には、なりすまし攻撃から保護するために、SSL/TLS 証明書の共通名 (CN) として DB インスタンスのエンドポイントが含まれています。その結果、クライアントがサブジェクト代替名 (SAN) をサポートしている場合は、DB クラスターエンドポイントのみを使用して SSL/TLS を使用する DB クラスターに接続できます。それ以外の場合は、書き込みインスタンスのインスタンスを使用する必要があります。

証明書のダウンロードについては、SSL/TLS を使用した DB cluster への接続の暗号化 を参照してください。

ここでは、SSL で SAN をサポートするクライアントとして、MariaDB Connector/J クライアントをお勧めします。詳細については、MariaDB Connector/J のダウンロードページを参照してください。

Aurora MySQL DB クラスターへの SSL/TLS 接続の要求

Aurora MySQL DB クラスターへのすべてのユーザー接続で、require_secure_transport DB クラスターパラメーターを使用して SSL/TLS を使用するように要求できます。デフォルトでは、require_secure_transport パラメータが OFF に設定されています。require_secure_transport パラメータを ON に設定すれば、DB クラスターへの接続で SSL/TLS を必須にすることができます。

require_secure_transport パラメータの値は、DB クラスターの DB クラスターパラメータグループを更新することで設定できます。変更を有効にするために、DB クラスターを再起動する必要はありません。パラメータグループの詳細については、「DB パラメータグループおよび DB クラスターパラメータグループを使用する」を参照してください。

注記

require_secure_transport パラメータは、Aurora MySQL バージョン 5.7 でのみ使用できます。このパラメータは、カスタム DB クラスターのパラメータグループで設定できます。このパラメータは、DB インスタンスパラメータグループでは使用できません。

DB クラスターに対して require_secure_transport パラメータが ON に設定されている場合、データベースクライアントが暗号化された接続を確立できれば、データベースクライアントはそのクラスターに接続できます。それ以外の場合は、次のようなエラーメッセージがクライアントに返されます。

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

Aurora MySQL の TLS バージョン

Aurora MySQL は Transport Layer Security (TLS) バージョン 1.0、1.1、1.2 をサポートしています。次の表は、Aurora MySQL バージョンの TLS サポートを示しています。

Aurora MySQL バージョン TLS 1.0 TLS 1.1 TLS 1.2

Aurora MySQL 5.7

サポート対象

サポート対象

サポート対象

Aurora MySQL 5.6

サポート対象

Aurora MySQL 1.23.1 以降でサポートされています

Aurora MySQL 1.23.1 以降でサポートされています

Aurora MySQL 5.7 DB クラスターの場合、tls_version DB クラスターパラメータを使用して、許可されたプロトコルバージョンを指定できます。ほとんどのクライアントツールまたはデータベースドライバには、同様のクライアントパラメータがあります。古いクライアントの中には、新しい TLS バージョンをサポートしていないものもあります。デフォルトでは、DB クラスターは、サーバーとクライアントの設定の両方で許可されている最高の TLS プロトコルバージョンを使用しようとします。

tls_version DB クラスターパラメータを次のいずれかの値に設定します。

  • TLSv1.2 – 暗号化された接続では、TLS バージョン 1.2 プロトコルのみが許可されます。

  • TLSv1.1 – 暗号化された接続では、TLS バージョン 1.1 および 1.2 プロトコルが許可されます。

  • TLSv1 – 暗号化された接続では、TLS バージョン 1.0、1.1、1.2 プロトコルが許可されます。

パラメータが設定されていない場合、暗号化された接続に対して TLS バージョン 1.0、1.1、1.2 プロトコルが許可されます。

DB クラスターのパラメータグループの変更については、「DB クラスターパラメータグループのパラメータの変更」を参照してください。AWS CLI を使用する場合、tls_version DB クラスターのパラメータの変更には、ApplyMethodpending-reboot を設定している必要があります。アプリケーションのメソッドが pending-reboot の場合は、パラメータグループに関連付けられている DB クラスターを停止および再起動した後に、パラメータの変更が適用されます。

注記

tls_version DB クラスターパラメータは Aurora MySQL 5.6 では使用できません。

Aurora MySQL DB クラスターへの接続の暗号化

デフォルトの mysql クライアントを使用して接続を暗号化するには、以下の例のように、--ssl-ca parameter でパブリックキーを参照して mysql クライアントを起動します。

MySQL 5.7 以降の場合:

mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com --ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY

MySQL 5.6 以前の場合:

mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com --ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-verify-server-cert

特定のユーザーアカウントに対して SSL/TLS 接続を要求できます。例えば、MySQL バージョンに応じて以下のいずれかのステートメントを使用し、ユーザーアカウント encrypted_user に対する SSL/TLS 接続を要求できます。

MySQL 5.7 以降の場合:

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

MySQL 5.6 以前の場合:

GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;

RDS プロキシを使用する場合は、通常のクラスターエンドポイントではなく、プロキシエンドポイントに接続します。Aurora DB クラスターへの直接接続の場合と同様に、プロキシへの SSL/TLS 接続を必須またはオプションにすることができます。RDS プロキシの使用の詳細については、「Amazon RDS Proxy の使用」を参照してください。

注記

MySQL での SSL/TLS 接続の詳細については、MySQL のドキュメントを参照してください。