すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for MongoDB:インスタンス作成時にルートアカウントに付与される権限

最終更新日:Mar 29, 2025

このトピックでは、ApsaraDB for MongoDB でルートアカウントに付与される権限について説明します。

ApsaraDB for MongoDB インスタンスを作成すると、システムは admin データベースにルートアカウントを自動的に作成します。ルートアカウントに付与される権限は、インスタンスのバージョンによって異なります。ルートアカウントには、インスタンスのバージョンごとに次の権限が付与されます。

  • インスタンスが MongoDB 4.2 以前を実行している場合、ルートアカウントは ApsaraDB for MongoDB の組み込み root ロールの権限を持ちます。

  • インスタンスが MongoDB 4.4 以降を実行している場合、ルートアカウントは alibabaCloudAdmin ロールの権限を持ちます。

    重要

    場合によっては、admin データベースにデータを書き込む際に深刻なパフォーマンスのジッターが発生する可能性があります。そのため、alibabaCloudAdmin ロールは admin データベースに対する書き込み権限を持たず、admin データベースに対する書き込み権限を持つアカウントを作成することもできません。

rolesInfo コマンドを実行して、特定のロールの権限を表示できます。 root ロールの権限と rolesInfo コマンドの詳細については、「root」および「rolesInfo」をご参照ください。

重要

データセキュリティを確保するために、ルートアカウントを使用してデータベースを管理しないことをお勧めします。ビジネス要件に基づいて、関連する権限を持つデータベースアカウントを作成することをお勧めします。詳細については、「ApsaraDB for MongoDB インスタンスのアカウントを作成する」をご参照ください。

次のコマンドを実行して、ルートアカウントの権限を表示できます。

db.getSiblingDB("admin").runCommand({usersInfo: "root"});
説明

usersInfo コマンドの詳細については、「usersInfo」をご参照ください。

alibabaCloudAdmin ロールの権限

  • このロールには、次の組み込みロールの権限(コレクションの読み取りと書き込み、アカウントの管理、統計情報のクエリなど)が付与されます。readWriteAnyDatabaseuserAdminAnyDatabasedbAdminAnyDatabaseclusterMonitorbackupenableShardingrestore

    説明

    alibabaCloudAdmin ロールは、admin データベースに対する読み取り権限のみを持ちます。

  • シャードクラスターインスタンスでは、flushRouterConfig、cleanupOrphaned、runCommandOnShard、splitVector、clearJumboFlag、moveChunk、splitChunk コマンドがサポートされています。

よくある質問

clusterAdmin、clusterManager、hostManager などの特権ユーザーまたはロールを作成できないのはなぜですか?

alibabaCloudAdmin ロールの権限は制限されています。そのため、カスタムユーザーまたはロールを作成する際に、ルートアカウントの既存の権限範囲を超える権限を付与することはできません。

admin データベースで readWrite、dbAdmin、dbOwner 権限を持つユーザーまたはロールを作成できないのはなぜですか?

alibabaCloudAdmin ロールは admin データベースに対する読み取り権限のみを持ちます。このロールを担ってデータベースにデータを書き込むことはできません。他のデータベースでは、これらの組み込み権限を持つユーザーまたはロールを作成できます。

すべてのカスタムコレクションに対する読み取り/書き込み権限を持つユーザーを作成するにはどうすればよいですか?

admin データベースで readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase の組み込みロールを持つアカウントを作成できます。コマンドの例:

db.getSiblingDB("admin").createUser({user:"myName",pwd:"myPassword",roles:["readWriteAnyDatabase"]})

clusterManager ロールには、シャードクラスターインスタンスの O&M に関連する多くのコマンドを実行する権限があります。このロールを作成できない場合、これらのコマンドを使用するにはどうすればよいですか?

デフォルトでは、alibabaCloudAdmin ロールの権限を持つルートアカウントは、シャードクラスターインスタンスの O&M に関連する一部のコマンドを実行できます。ルートアカウントを使用して、これらのコマンドを実行できます。

O&M コマンドを実行するためのカスタムアカウントを作成する場合は、次の方法を使用してユーザーを作成します。次の例は、splitVector コマンドをサポートするユーザーを作成する方法を示しています。

db.runCommand({createRole:'myRole',privileges:[{"resource":{"db":"","collection":""},"actions":['splitVector']}],roles:['readAnyDatabase']})

db.getSiblingDB("admin").createUser({user:"myUser",pwd:"myPassword",roles:["myRole"]})

admin データベースで変更ストリームを使用すると、新しいアカウントに集約操作を実行する権限がないことを示すエラーが発生するのはなぜですか?

新しいアカウントが他のデータベースに対する readAnyDatabase 権限を持っていることを確認し、admin データベースに対する読み取り権限をアカウントに付与する必要があります。

カスタムアカウントが myUser であるとします。次のコマンドを実行して、admin データベースに対する読み取り権限をカスタムアカウントに付与できます。

db.adminCommand({ grantRolesToUser: "myUser", roles: [{ role: "read", db: "admin"}]})

ApsaraDB for MongoDB の組み込み xxxAnyDatabase 権限は、公式の動作とは異なります。組み込み権限は、config、local、admin データベースをカバーしていません。そのため、admin データベースに対する読み取り権限を追加で付与する必要があります。

なぜ返された結果には、私が flink-sql-connector-mongodb-cdc指定された例に基づいてロールを作成するにはどうすればよいですか?

listDatabases 操作はクラスター全体に適用され、クラスターリソースで実行する必要があります。次のコマンドを実行して、カスタムロールを作成できます。

db.createRole(
    {
        role: "flinkrole",
        privileges: [
        {
            resource: { db: "", collection: "" },
            actions: [
                "splitVector",
                "listCollections",
                "collStats",
                "find",
                "changeStream" ]
        },
        {
            resource: { "cluster": true }, 
            actions: [ "listDatabases" ]
        }
        ],
        roles: [
            { role: 'read', db: 'config' }
        ]
    }
);

ロールとユーザーの作成後に CDC サービスを使用する際にエラーが引き続き発生する場合は、チケットを送信して、Alibaba Cloud テクニカルサポートに連絡してください。