

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

# Amazon DocumentDB ユーザーの管理
<a name="security.managing-users"></a>

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

**注記**  
 **2020 年 3 月 26 日** より前に作成されたすべての新規ユーザーには `dbAdminAnyDatabase`、`readWriteAnyDatabase`、および `clusterAdmin` のロールが付与されています。クラスター内のすべてのユーザーに最小限の特権を適用するために、すべてのユーザーを再評価し、必要に応じてロールを変更することをお勧めします。  
詳細については、「[ロールベースのアクセス制御 (RBAC) を使用したデータベースへのアクセス](role_based_access_control.md)」を参照してください。

## プライマリおよび `serviceadmin` ユーザ
<a name="security.managing-users-master"></a>

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

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

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

**注記**  
Amazon DocumentDB クラスターのマスターユーザーや `serviceadmin` ユーザーを削除したり、マスターユーザーの `root` のロールを無効にしたりすることはできません。  
マスターユーザーパスワードを忘れた場合は、AWS マネジメントコンソール または AWS CLI を使用してリセットできます。

## 追加ユーザーの作成
<a name="security.managing-users-creating"></a>

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

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

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

```
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` データベース内に作成され、データベース `readWrite` への `sample-database` アクセス許可が付与されます。

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

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

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

```
use admin
```

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

## Amazon DocumentDB のパスワードの自動ローテーション
<a name="security.managing-users-rotating-passwords"></a>

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

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

AWS Secrets Manager および Amazon DocumentDB のネイティブ統合の詳細については、以下を参照してください。
+ [ブログ: How to rotate Amazon DocumentDB and Amazon Redshift credentials in AWS Secrets Manager](https://aws.amazon.com/blogs/security/how-to-rotate-amazon-documentdb-and-amazon-redshift-credentials-in-aws-secrets-manager/)
+ [AWS Secrets Manager とは](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)
+ [AWS Secrets Manager シークレットのローテーション](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-documentdb.html)
+ [Secrets Manager の Amazon DocumentDB 認証情報](https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_secret_json_structure.html#reference_secret_json_structure_docdb)