

# Amazon RDS でのデータベース認証
<a name="database-authentication"></a>

 Amazon RDS は、データベースユーザーを認証するいくつかの方法をサポートしています。

パスワード、Kerberos、および IAM データベース認証では、データベースに対する認証にはさまざまな方法が使用されます。したがって、特定のユーザーは、1 つの認証方法のみを使用してデータベースにログインできます。

PostgreSQL の場合は、特定のデータベースのユーザーに対して、次のロール設定の 1 つだけを使用します。
+ IAM データベース認証を使用するには、`rds_iam`ロールをユーザーに割り当てます。
+ Kerberos 認証を使用するには、`rds_ad`ロールをユーザーに割り当てます。
+ パスワード認証を使用するには、`rds_iam` または `rds_ad` ロールをユーザーに割り当てないでください。

ネストされた許可アクセスによって直接的または間接的に PostgreSQL データベースのユーザーに `rds_iam` ロールと `rds_ad` ロールを両方を割り当てないでください。`rds_iam`ロールがマスターユーザーに追加されると、IAM 認証はパスワード認証よりも優先されるため、マスターユーザーは IAM ユーザーとしてログインする必要があります。

**重要**  
アプリケーションではマスターユーザーを直接使用しないことを強くお勧めします。代わりに、アプリケーションに必要な最小の特権で作成されたデータベースユーザーを使用するというベストプラクティスに従ってください。

**Topics**
+ [パスワード認証](#password-authentication)
+ [IAM データベース認証](#iam-database-authentication)
+ [Kerberos 認証](#kerberos-authentication)

## パスワード認証
<a name="password-authentication"></a>

*パスワード認証*を使用すると、データベースがユーザーアカウントのすべての管理を行います。DB エンジンがパスワードを指定するのに必要な正しい句を使用して、`CREATE USER` などの SQL 文でユーザーを作成します。例えば、MySQL の文は `CREATE USER` *名前* `IDENTIFIED BY` *パスワード* となりますが、PostgreSQLでは `CREATE USER` *名前* `WITH PASSWORD` *パスワード* となります。

パスワード認証を使用すると、データベースがユーザーアカウントを制御および認証します。DB エンジンに強力なパスワード管理機能がある場合は、セキュリティを強化できます。ユーザーコミュニティが小規模である場合は、パスワード認証を使用すると、データベース認証が管理しやすくなります。この場合、クリアテキストパスワードが生成されるため、AWS Secrets Manager との統合によってセキュリティが強化されます。

Amazon RDS での Secrets Manager の使用の詳細については、「*AWS Secrets Manager ユーザーガイド*」の「[基本シークレットの作成](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)」と「[サポートされている Amazon RDS データベースのシークレットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-rds.html)」を参照してください。カスタムアプリケーションにおいてシークレットをプログラムで取得する方法については、*AWS Secrets Manager ユーザーガイド*の「[シークレット値の取得](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_retrieve-secret.html)」を参照してください。

## IAM データベース認証
<a name="iam-database-authentication"></a>

AWS Identity and Access Management (IAM) データベース認証を使用して、DB インスタンスを認証できます。この認証方法では、DB インスタンスに接続するときにパスワードを使用する必要はありません。代わりに、認証トークンを使用します。

特定の DB エンジンの可用性など、IAM データベース認証の詳細については、「[MariaDB、MySQL、および PostgreSQL の IAM データベース認証](UsingWithRDS.IAMDBAuth.md)」を参照してください。

## Kerberos 認証
<a name="kerberos-authentication"></a>

 Amazon RDS で、Kerberos と Microsoft Active Directory を使用した、データベースユーザーの外部認証がサポートされるようになりました。Kerberos は、ネットワーク経由でパスワードを送信する必要をなくすためにチケットと対称キー暗号化を使用するネットワーク認証プロトコルです。Kerberos は Active Directory に組み込まれており、データベースなどのネットワークリソースに対するユーザー認証を行えるように設計されています。

 Amazon RDS での Kerberos と Active Directory のサポートにより、データベースユーザーのシングルサインオンおよび一元化認証という利点が得られます。ユーザー資格情報を Active Directory に保持できます。Active Directory には、複数の DB インスタンスの資格情報を保存し、管理する一元的な場所が用意されています。

セルフマネージド Active Directory の認証情報を使用するには、DB インスタンスが参加している Directory Service for Microsoft Active Directory との信頼関係を確立する必要があります。

 RDS for PostgreSQL および RDS for MySQL は、フォレスト全体の認証または選択的認証による一方向および双方向のフォレスト信頼関係をサポートしています。

シナリオによっては、外部信頼関係に Kerberos 認証を設定できます。これには、セルフマネージド Active Directory に追加の設定が必要です。これには、[Kerberos フォレストの検索順序](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/kfso-not-work-in-external-trust-event-is-17)が含まれますが、これらに限定されません。

Microsoft SQL Server および PostgreSQL DB インスタンスは、一方向および双方向のフォレスト信頼関係をサポートしています。Oracle DB インスタンスは、一方向と双方向の外部およびフォレストの信頼関係をサポートしています。詳細については、*Directory Service 管理ガイド*の「[信頼関係を作成する場合](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/setup_trust.html)」を参照してください。

特定の DB エンジンを使用した Kerberos 認証については、以下を参照してください。
+  [RDS for SQL Server による AWS Managed Active Directory の操作](USER_SQLServerWinAuth.md) 
+  [Amazon RDS for MySQL での Kerberos 認証の使用](mysql-kerberos.md) 
+  [Amazon RDS for Oracle の Kerberos 認証の設定](oracle-kerberos.md) 
+  [Amazon RDS for PostgreSQL で Kerberos 認証を使用する](postgresql-kerberos.md) 
+  [Amazon RDS for Db2 での Kerberos 認証の使用](db2-kerberos.md) .

**注記**  
現在、Kerberos 認証は MariaDB DB インスタンスではサポートされていません。