MySQL DB インスタンス接続の保護 - Amazon Relational Database Service

MySQL DB インスタンス接続の保護

MySQL DB インスタンスのセキュリティを管理できます。

Amazon RDS での MySQL のセキュリティ

MySQL DB インスタンスのセキュリティは以下の 3 つのレベルで管理されます。

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

  • DB インスタンスを作成するときは、VPC セキュリティグループを使用して、どのデバイスまたは Amazon EC2 インスタンスが DB インスタンスのエンドポイントとポートへの接続を開くことができるかを制御します。これらのエンドポイントおよびポートの接続は、Secure Socket Layer (SSL) と Transport Layer Security (TLS) を使用して行います。さらに、会社のファイアウォールルールでも、社内のどのデバイスが DB インスタンスへの接続を開くことができるかを制御できます。

  • MySQL DB インスタンスに対するログインとアクセス権限を認証するには、次の方法のいずれか、または組み合わせて行います。

    MySQL のスタンドアロンインスタンスと同じ方法を使用することもできます。CREATE USERRENAME USERGRANTREVOKESET PASSWORD などのコマンドは、オンプレミスデータベースでの方法と同様に、データベーススキーマテーブルを直接変更します。ただし、データベーススキーマテーブルを直接変更することはベストプラクティスではなく、RDS for MySQL バージョン 8.0.36 以降ではサポートされていません。詳細については、MySQL ドキュメントの「Access Control and Account Management」を参照してください。

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

    もう 1 つのオプションは、RDS for MySQL の Kerberos 認証です。DB インスタンスは AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) を使用して Kerberos 認証を有効にします。信頼するドメインに参加している MySQL DB インスタンスに対してユーザーが認証を行う場合、認証リクエストが転送されます。転送されたリクエストは、AWS Directory Service で作成したドメインディレクトリに移動します。(詳しくは、「Amazon RDS for Microsoft SQL Server の Kerberos 認証の使用」を参照してください。)

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

エンジンバージョン システム権限 データベースロール

RDS for MySQL バージョン 8.0.36 以上

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE ROLE, DROP ROLE, APPLICATION_PASSWORD_ADMIN, ROLE_ADMIN, SET_USER_ID, XA_RECOVER_ADMIN

rds_superuser_role

rds_superuser_role の詳細については、「RDS for MySQL のロールベースの権限モデル」を参照してください。

RDS for MySQL バージョン 8.0.36 未満

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, REPLICATION SLAVE

注記

DB インスタンスのマスターユーザーを削除できますが、お勧めしません。マスターユーザーを再作成するには、ModifyDBInstance RDS API オペレーションまたは modify-db-instance AWS CLI コマンドを使用して、新しいマスターユーザーのパスワードを該当するパラメータで指定します。インスタンスに既存のマスターユーザーがない場合、指定したパスワードを使用してマスターユーザーが作成されます。

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

DB インスタンスの管理を可能にするために、スタンダード的なコマンド killkill_query の使用は制限されています。代わりに、Amazon RDS のコマンド rds_killrds_kill_query が用意されており、DB インスタンスでのエンドユーザーセッションやクエリを終了させるために使用できます。