次の方法で共有


Azure Cosmos DB for MongoDB vCore で、セカンダリユーザーに対して設定可能な読み取りおよび読み取り/書き込み権限について

重要

Azure Cosmos DB for MongoDB 仮想コアのセカンダリ ネイティブ ユーザー機能は現在プレビュー段階です。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供され、運用環境のワークロードには推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。

Azure Cosmos DB for MongoDB 仮想コアで、特殊な読み取り/書き込みロールを持つセカンダリ ユーザーがサポートされるようになりました。 この機能により、セカンダリ ユーザーはデータにアクセスして変更できるようになるため、データ セキュリティを強化しながら責任を委任しやすくなります。 きめ細かなアクセス制御を許可すると、チームは、システムの整合性を損なうことなく、開発者やアナリストなどのさまざまな利害関係者に自信を持ってデータ アクセスを拡張できます。

[前提条件]

セカンダリ ユーザーの構成

ユーザーの作成や削除など、すべてのネイティブ ユーザー管理操作に対して、クラスターでセカンダリ ネイティブ ユーザー管理を有効にします。 この機能は、ARM テンプレートまたは Azure CLI を使用して有効または無効にすることができます。

az resource patch --ids "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroup}/providers/Microsoft.DocumentDB/mongoClusters/{ClusterName}" --api-version 2024-10-01-preview --properties "{\"previewFeatures\": [\"EnableReadOnlyUser\"]}"

セカンダリ ユーザーの無効化

クラスター上のすべてのセカンダリ ユーザーを削除する必要がある場合は、 削除操作を使用します。

クラスターでセカンダリ ユーザー管理操作を無効にするには、previewFeatures クラスター プロパティから EnableReadOnlyUser 値を削除します。 セカンダリ ユーザー管理を無効にすると、クラスターに対するすべてのセカンダリ ユーザー操作 (ユーザーの作成など) は無効になりますが、クラスターで作成されたすべてのセカンダリ ユーザーは引き続きデータベース アクセスに使用できます。

サポートされているコマンドと例

クラスターのプロビジョニング中に、すべての特権を持つ 1 人の管理ユーザーが Azure Cosmos DB for MonogDB 仮想コア クラスターに作成されます。 この管理ユーザーは、クラスターのすべての操作を実行でき、削除することはできません。

さらに、Azure Cosmos DB for MongoDB 仮想コアでは、読み取り専用または読み取り/書き込み特権を持つセカンダリ ユーザー向けのロールベースのアクセス制御 (RBAC) がサポートされています。 この機能を使用すると、管理者はプライマリ データの整合性を保護しながら、重要な読み取り操作のためにセカンダリ ユーザーにアクセス権を付与するロールを割り当てることができます。

ユーザーは、そのクラスター上のすべてのデータベースに対してクラスター レベルで作成され、権限が付与されます。 readWriteAnyDatabase ロールと clusterAdmin ロールは、データベース管理とデータベース操作の権限を含め、クラスターに対する完全な読み取り/書き込みアクセス許可を付与します。 readAnyDatabase ロールは、クラスターに対する読み取り専用アクセス許可を付与するために使用されます。

データベース管理およびデータベース操作権限を持つ完全な読み取り/書き込みユーザーのみがサポートされます。 readWriteAnyDatabase ロールと clusterAdmin ロールを個別に割り当てることはできません。

MongoDB ドライバーまたは mongosh などのツールを使用して、これらの操作を実行できます。

Mongosh を使用して操作を認証および実行する

クラスターのプロビジョニング中に作成された組み込みの管理アカウントを使用して認証します。 クラスターに対するユーザー管理特権 (userAdmin) を持つのは、この組み込みの管理アカウントだけです。

mongosh "mongodb+srv://<UserName>:<Password>@<ClusterName>?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000"

ヒント

クラスターのネイティブ接続文字列は、Azure portal の [接続文字列] ページで取得できます。

ユーザーの作成

コマンドを実行するクラスターに新しいユーザーを作成します。 ユーザーが存在する場合、createUser コマンドからは重複ユーザー エラーが返されます。

データ管理者ユーザー

db.runCommand(
    {
        createUser:"yourUserName",
        pwd : "yourPassword",
        roles : [
            { role:"clusterAdmin",db:"admin" },
            { role:"readWriteAnyDatabase", db:"admin" }
        ]
    }
)

読み取り専用ユーザー

db.runCommand(
    {
        createUser:"yourUserName",
        pwd : "yourPassword",
        roles : [
            { role:"readAnyDatabase",db:"admin" }
        ]
    }
)

ユーザーの更新

コマンドを実行するデータベースのユーザーを更新します。 updateUser コマンドではパスワードの更新のみがサポートされます。

use admin
db.runCommand(
    {
        updateUser:"<username>",
        pwd : "<new cleartext password>"
    }
)

ユーザーの削除

クラスターからユーザーを削除します。

use admin
db.runCommand(
    {
        dropUser:"<username>"
    }
)

ユーザーを一覧表示する

クラスターで作成されたネイティブ ユーザーに関する情報を返します。 また、1 人のユーザーを usersInfoに渡すこともできます。 その場合は、ユーザー、そのロールなどに関する情報が返されます。

use admin
db.runCommand(
    {
        usersInfo:1
    }
)

次のステップ