ApsaraDB RDS for SQL Server では、各アカウントがアクセス可能なデータベースや、それらのデータベースに対して実行できる操作を制御できます。このトピックでは、各アカウントタイプの権限範囲について説明し、標準アカウントまたは特権アカウントの権限を変更する方法を解説します。
ApsaraDB RDS コンソールは、データベースレベルで権限を付与します。テーブルなどの特定のデータベースオブジェクトに権限を付与するには、必要な SQL ステートメントを実行します。詳細については、「オブジェクト権限の付与 (Transact-SQL)」をご参照ください。
権限変更が可能なアカウントタイプ
次の表は、コンソールから変更可能なアカウントタイプを示しています。
| アカウントタイプ | データベース権限の変更 | 注記 |
|---|---|---|
| 標準アカウント | 対応 | — |
| 特権アカウント | 対応 | — |
| システム管理者アカウント | 非対応 | デフォルトですべてのデータベースに対するすべての権限を保持 |
| グローバル読み取り専用アカウント | 非対応 | デフォルトですべてのユーザーデータベースに対する読み取り専用権限を保持。新規作成されたデータベースにも自動的に適用されます。 |
アカウント権限
システム管理者アカウント
-
権限付与対象: インスタンス上のすべてのデータベース
-
権限: RDS インスタンスのすべての権限。詳細については、「Permissions (Database Engine)」をご参照ください。
グローバル読み取り専用アカウント
-
権限付与対象: インスタンス上のすべてのユーザーデータベース
-
権限タイプ: 読み取り専用。インスタンス上で新しく作成されたデータベースにも権限が自動的に適用されます。
標準アカウントおよび特権アカウント
権限付与対象: アカウントに許可されたデータベース。
セキュリティの観点から、ApsaraDB RDS では一部の権限をストアドプロシージャにカプセル化しています。詳細については、「ストアドプロシージャ」をご参照ください。
特権アカウントは、許可されたすべてのデータベースに対して db_owner ロールを持ちますが、sysadmin ロールは持ちません。つまり、特権アカウントはシステム管理者 (SA) アカウントと同等ではありません。SQL Server Management Studio (SSMS) を使用して特権アカウントに手動で sysadmin サーバーロールを付与しても、ApsaraDB RDS のセキュリティ制限により、その変更は有効になりません。SA レベルの権限が必要な場合は、「ApsaraDB RDS for SQL Server インスタンスのシステム管理者アカウントの作成」を参照してシステム管理者アカウントを作成してください。システム管理者アカウントを作成すると、そのインスタンスは SLA の対象外となります。
次の表は、標準アカウントおよび特権アカウントで利用可能な 3 種類の権限レベルについて説明しています。
| 権限タイプ | 割り当てられる SQL Server ロール | アカウントが実行できる操作 |
|---|---|---|
| 読み取り専用 | サーバーレベル: public、processadmin、setupadmin;データベースレベル: public、db_datareader |
すべてのユーザーテーブルおよびビューからデータを読み取ります。 |
| 読み取り/書き込み (DML) | サーバーレベル: public、processadmin、setupadmin;データベースレベル: public、db_datareader、db_datawriter |
すべてのユーザーテーブルのデータを読み取り、追加、更新、削除できます。 |
| オーナー | サーバーレベル: public、processadmin、setupadmin;データベースレベル: public、db_owner |
テーブル、ビュー、プロシージャ、スキーマの作成など、データベースのすべての構成およびメンテナンス操作を実行できます。 |
各レベルに含まれるサーバーレベルおよびデータベースレベルの権限の完全な一覧については、以下のセクションを展開してください。
詳細については、「データベースレベルのロール」をご参照ください。
前提条件
作業を開始する前に、以下の条件を満たしていることを確認してください。
-
ApsaraDB RDS for SQL Server インスタンス
-
インスタンス上に作成済みの標準アカウントまたは特権アカウント
アカウント権限の変更
-
インスタンス ページに移動します。トップナビゲーションバーで RDS インスタンスが配置されているリージョンを選択し、該当の RDS インスタンスを見つけてインスタンス ID をクリックします。
-
左側のナビゲーションウィンドウで アカウント をクリックします。
-
権限を変更するアカウントを見つけ、権限の変更 をクリックします。

-
アカウント権限の編集 パネルで、以下のとおり権限を設定します。
-
許可するデータベースの変更: 権限を付与するデータベースを選択し、
または
アイコンをクリックして、許可済みリストと未許可リスト間でデータベースを移動します。 -
権限レベルの設定: 許可済みデータベース セクションで、各データベースの権限レベルを選択します。
-
読み取り専用:
db_datareaderデータベースロールを割り当てます。 -
読み取り/書き込み (DML):
db_datareaderおよびdb_datawriterデータベースロールを割り当てます。 -
オーナー:
db_ownerデータベースロールを割り当てます。オーナー権限は、テーブルやスキーマの作成などのデータ定義言語 (DDL) 操作を含む、データベースに対する広範な制御を提供します。アカウントがこれらの機能を実際に必要とする場合にのみ、このレベルを割り当ててください。
-
-
-
確認ダイアログで OK をクリックします。
よくある質問
読み取り/書き込み (DML) 権限を持つアカウントでテーブルを作成できないのはなぜですか?
読み取り/書き込み (DML) 権限を持つアカウントには db_datareader および db_datawriter ロールが割り当てられており、これらはデータ処理 (SELECT、INSERT、UPDATE、DELETE) をカバーしますが、データ定義はカバーしません。CREATE TABLE 権限は含まれていません。
データベース内にテーブルを作成するには、以下のいずれかの方法を使用できます。
-
方法 1: 必要な SQL ステートメントを実行します。詳細については、「データベース権限の付与 (Transact-SQL)」と「データベースレベルのロール」をご参照ください。
-
方法 2: ApsaraDB RDS コンソールにログインします。ご利用の RDS インスタンスの アカウント ページで、アカウントの権限タイプを オーナー に変更します。オーナー権限タイプには、テーブル作成を含むほとんどの権限が付与されます。ただし、慎重に操作してください。
CREATE TABLE 権限のみを付与する必要がある場合は、方法 1 を使用してください。この方法の方がセキュリティレベルが高くなります。