このトピックでは、ルートアカウントに付与されるApsaraDB for MongoDBに対する権限について説明します。
ApsaraDB for MongoDBインスタンスを作成すると、システムは自動的に管理データベースにルートアカウントを作成します。 ルートアカウントに付与される権限は、インスタンスのバージョンによって異なります。 ルートアカウントには、さまざまなインスタンスバージョンに対して次の権限が付与されます。
インスタンスがMongoDB 4.2以前を実行している場合: ルートアカウントには、ApsaraDB for MongoDBのビルトインルートロールの権限があります。
インスタンスがMongoDB 4.4以降を実行する場合、ルートアカウントにはalibabaCloudAdminロールの権限があります。
重要一部のシナリオでは、adminデータベースにデータを書き込むときに重大なパフォーマンスジッタが発生することがあります。 したがって、alibabaCloudAdminロールにはadminデータベースに対する書き込み権限がなく、adminデータベースに対する書き込み権限を持つアカウントを作成できません。
rolesInfo
コマンドを実行して、特定のロールの権限を表示できます。 rootロールの権限とrolesInfo
コマンドの詳細については、「root」と「rolesInfo」をご参照ください。
データのセキュリティを確保するため、データベースの管理にrootアカウントを使用しないことをお勧めします。 ビジネス要件に基づいて、関連する権限を持つデータベースアカウントを作成することをお勧めします。 詳細については、「ApsaraDB For MongoDBインスタンスのアカウントの作成」をご参照ください。
次のコマンドを実行して、rootアカウントの権限を表示できます。
db.getSiblingDB("admin").runCommand({usersInfo: "root"});
usersInfo
コマンドの詳細については、「usersInfo」をご参照ください。
alibabaCloudAdminロールの権限
ロールには、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、clusterMonitor、backup、enableSharding、restoreの組み込みロールのアクセス許可 (コレクションの読み取りと書き込み、アカウントの管理、統計の照会など) が付与されます。
説明alibabaCloudAdminロールには、adminデータベースに対する読み取り権限のみがあります。
シャードクラスタインスタンスでは、flushRouterConfig、cleanupOrphaned、runCommandOnShard、splitVector、clearJumboFlag、moveChunk、およびsplitChunkのコマンドがサポートされています。
FAQ
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に関連するいくつかのコマンドを実行できます。 rootアカウントを使用して、これらのコマンドを実行できます。
O&Mコマンドを実行するカスタムアカウントを作成する場合は、次の方法を使用してユーザーを作成します。 次の例は、splitVectorコマンドをサポートするユーザーを作成する方法を示しています。
db.ru nCommand({createRole:'myRole',privileges:[{"resource":{"db":"" "," collection ":" ""},"actions":['splitVector']}],roles:['readAnyDatabase']}) db.getSiblingDB("admin").createUser({user:"myUser",pwd:"myPassword",roles:["myRole"]})
私が使うときインスタンスの作成時にルートアカウントに付与される権限は何ですか。 提供された例に基づいてロールを作成する場合、結果がロールに権限がないことを示すのはなぜですか?
listDatabasesアクションはクラスター全体に適用され、クラスターリソースで実行する必要があります。 次のコマンドを実行して、カスタムロールを作成できます。
db.createRole () { role: "flinkrole" 、 privileges: [ { リソース: { db: "", collection: "" }, アクション: [ "splitVector" 、 "listDatabases" 、 "listCollections" 、 "collStats" 、 "find" 、 "changeStream"] }, { リソース: { "cluster": true} 、 アクション: [ "listDatabases"] } ], roles: [ {role: 'read', db: 'config'} ] } );
ロールとユーザーの作成後にCDCサービスを使用してもエラーが発生した場合は、 チケットを起票し、Alibaba Cloudテクニカルサポートにお問い合わせください。