Amazon DocumentDB ユーザーの管理 - Amazon DocumentDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon DocumentDB ユーザーの管理

Amazon DocumentDB の場合、ユーザーはクラスターへの認証にパスワードを接続します。各クラスターには、クラスターの作成時に設定されるプライマリサインイン認証情報があります。

注記

2020 年 3 月 26 日 より前に作成されたすべての新規ユーザーには dbAdminAnyDatabasereadWriteAnyDatabase、および clusterAdmin のロールが付与されています。クラスター内のすべてのユーザーに最小限の特権を適用するために、すべてのユーザーを再評価し、必要に応じてロールを変更することをお勧めします。

詳細については、「ロールベースのアクセスコントロールを使用したデータベースアクセス」を参照してください。

プライマリとserviceadminユーザー

新しく作成された Amazon DocumentDB クラスターには、マスターユーザーと serviceadmin ユーザーの 2 つのユーザーがあります。

マスターユーザー は単一の特権ユーザーであり、管理タスクの実行と、ロールを持つ追加のユーザーの作成を行うことができます。Amazon DocumentDB クラスターに初めて接続するときは、マスターユーザー名およびパスワードを使用して認証する必要があります。マスターユーザーには、Amazon DocumentDB クラスターの作成時に該当する管理権限が提供され、さらに root のロールが付与されます。

serviceadmin ユーザーは、クラスターの作成時に暗黙で作成されます。すべての Amazon DocumentDB クラスターには、クラスターを管理する AWS 機能を提供するserviceadminユーザーがあります。パスワードでのログイン、パスワードの削除や名前変更、または serviceadmin のアクセス許可の変更を行うことはできません。それらの操作を試みると、エラーが発生します。

注記

Amazon DocumentDB クラスターのマスターユーザーや serviceadmin ユーザーを削除したり、マスターユーザーの root のロールを無効にしたりすることはできません。

プライマリユーザーのパスワードを忘れた場合は、 AWS Management Console または を使用してリセットできます AWS CLI。

追加ユーザーの作成

マスターユーザー (または createUser ロールを持つユーザー) として接続すると、次に示すように、新しいユーザーを作成できます。

db.createUser( { user: "sample-user-1", pwd: "password123", roles: [{"db":"admin", "role":"dbAdminAnyDatabase" }] } )

ユーザの詳細を表示するには、次のように show users コマンドを使用できます。また、dropUser コマンドを使用してユーザーを削除することもできます。詳細については、「一般的なコマンド」を参照してください。

show users { "_id" : "serviceadmin", "user" : "serviceadmin", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }, { "_id" : "myPrimaryUser", "user" : "myPrimaryUser", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }, { "_id" : "sample-user-1", "user" : "sample-user-1", "db" : "admin", "roles" : [ { "role" : "dbAdminAnyDatabase", "db" : "admin" } ] }

この例では、新しいユーザー sample-user-1admin データベースに帰属させています。これは、新しいユーザーには常に当てはまります。Amazon DocumentDB には、authenticationDatabase のコンセプトを含んでおらず、したがって、すべての認証は admin データベースで実施されます。

ユーザーの作成時に、db フィールドを省略してロールを指定すると、Amazon DocumentDB は接続の発行先であるデータベースに暗黙でロールを帰属させます。たとえば、データベース sample-database に対して接続を発行し、次のコマンドを実行すると、ユーザー sample-user-2admin データベース内に作成され、データベース sample-database への readWrite アクセス許可が付与されます。

db.createUser( { user: "sample-user-2", pwd: "password123", roles: ["readWrite"] } )

すべてのデータベースを対象とするロール (readInAnyDatabase など) を持つユーザーを作成するには、ユーザーの作成時に admin データベースのコンテキストで操作をしているか、ユーザーの作成時にロールのデータベースを明示的に指定する必要があります。

データベースのコンテキストを切り替えるには、次のコマンドを使用できます。

use admin

ロールベースのアクセスコントロールや、クラスター内のすべてのユーザーに最小限の特権を適用する方法の詳細については、「ロールベースのアクセスコントロールを使用したデータベースアクセス」を参照してください。

Amazon DocumentDB のパスワードを自動的にローテーションする

を使用すると AWS Secrets Manager、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager へのAPI呼び出しに置き換えて、プログラムでシークレットを取得できます。シークレットはそこに存在しないため、これは、あなたのコードを調べている誰かがシークレットを漏らさないようにするのに役立ちます。また、指定したスケジュールに従って自動的にシークレットを更新するように Secrets Manager を設定することができます。これにより、長期のシークレットを短期のシークレットに置き換えることが可能となり、侵害されるリスクが大幅に減少します。

Secrets Manager を使用すると、Secrets Manager が提供する AWS Lambda 関数を使用して、Amazon DocumentDB パスワード (つまり、シークレット) を自動的にローテーションできます。

AWS Secrets Manager および Amazon DocumentDB とのネイティブ統合の詳細については、以下を参照してください。