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

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

Amazon DocumentDB ユーザーの管理

Amazon DocumentDB の場合、ユーザーはクラスターへの認証にパスワードを併用します。各クラスターには、クラスターの作成時に設定したマスターユーザーおよびパスワードがあります。

注記

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

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

マスターユーザーと serviceadmin ユーザー

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

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

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

注記

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

マスターユーザーのパスワードを忘れた場合は、AWS マネジメントコンソール または 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" : "myMasterUser", "user" : "myMasterUser", "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-2 がデータベース admin 内に作成され、データベース sample-database への readWrite アクセス許可が付与されます。

db.createUser( { user: "sample-user-2", pwd: "password123", roles: [{role: "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 のネイティブ統合の詳細については、以下を参照してください。