翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 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-1
を admin
データベースに帰属させています。これは、新しいユーザーには常に当てはまります。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: ["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 とのネイティブ統合の詳細については、以下を参照してください。