翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon DocumentDB ユーザーの管理
Amazon DocumentDB の場合、ユーザーはクラスターへの認証にパスワードを接続します。各クラスターには、クラスターの作成時に設定されるプライマリサインイン認証情報があります。
注記
2020 年 3 月 26 日 より前に作成されたすべての新規ユーザーには dbAdminAnyDatabase、readWriteAnyDatabase、および clusterAdmin のロールが付与されています。クラスター内のすべてのユーザーに最小限の特権を適用するために、すべてのユーザーを再評価し、必要に応じてロールを変更することをお勧めします。
詳細については、「ロールベースのアクセス制御 (RBAC) を使用したデータベースへのアクセス」を参照してください。
プライマリおよび 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
ロールベースのアクセスコントロールや、クラスター内のすべてのユーザーに最小限の特権を適用する方法の詳細については、「ロールベースのアクセス制御 (RBAC) を使用したデータベースへのアクセス」を参照してください。
Amazon DocumentDB のパスワードの自動ローテーション
を使用すると AWS Secrets Manager、コード内のハードコードされた認証情報 (パスワードを含む) を Secrets Manager への API コールに置き換えて、プログラムでシークレットを取得できます。シークレットはそこに存在しないため、これは、あなたのコードを調べている誰かがシークレットを漏らさないようにするのに役立ちます。また、指定したスケジュールに従って自動的にシークレットを更新するように Secrets Manager を設定することができます。これにより、長期のシークレットを短期のシークレットに置き換えることが可能となり、侵害されるリスクが大幅に減少します。
Secrets Manager を使用すると、Secrets Manager が提供する AWS Lambda 関数を使用して、Amazon DocumentDB パスワード (つまり、シークレット) を自動的にローテーションできます。
AWS Secrets Manager および Amazon DocumentDB とのネイティブ統合の詳細については、以下を参照してください。