Windows Azure SQL データベースにおけるデータベースとログインの管理
Microsoft Windows Azure SQL データベースでは、サービスをサインアップすると、プロビジョニング処理が実行され、SQL データベース サーバー、master という名前のデータベース、およびログインが作成されます。このログインは SQL データベース サーバーのサーバーレベル プリンシパルとなります。このログインは、内部設置型 SQL Server インスタンスにおけるサーバーレベル プリンシパルである sa と似ています。
SQL データベース サーバーレベル プリンシパル アカウントは、サーバーレベルおよびデータベースレベルのセキュリティをすべて管理する権限を常に有しています。このトピックでは、Windows Azure SQL データベースでサーバーレベル プリンシパルなどのアカウントを使用してログインおよびデータベースを管理する方法について説明します。
SQL データベースのセキュリティ管理の概要
Windows Azure SQL データベースにおけるセキュリティ管理は、内部設置型の SQL Server インスタンスにおけるセキュリティ管理と似ています。データベースレベルでのセキュリティ管理はほぼ同じで、使用できるパラメーターのみが異なります。SQL データベース は 1 つ以上の物理コンピューターに拡張できるため、Windows Azure SQL データベースのサーバーレベル管理については別の方法が使用されます。次の表に、内部設置型の SQL Server と Windows Azure SQL データベースのセキュリティ管理の相違点についてまとめています。
| 相違点 | 内部設置型 SQL Server | Windows Azure SQL データベース |
|---|---|---|
|
サーバーレベル セキュリティを管理する場所 |
SQL Server Management Studio のオブジェクト エクスプローラーの [セキュリティ] フォルダー |
master データベース |
|
ログインの作成に使用するサーバーレベル セキュリティ ロール |
詳細については、「サーバーレベルのロール」を参照してください。 |
master データベースの |
|
ログインを管理するためのコマンド |
|
(一部のパラメーターが制限されます。また、master データベースに接続する必要があります。) |
|
すべてのログインの表示 |
|
(master データベースに接続する必要があります。) |
|
データベースの作成に使用するサーバー レベル ロール |
詳細については、「サーバーレベルのロール」を参照してください。 |
master データベースの |
|
データベースの作成に使用するコマンド |
|
(一部のパラメーターが制限されます。また、master データベースに接続する必要があります。) |
|
データベースの削除 |
|
ユーザーが dbmanager ロールの場合、ユーザーがそのデータベースを作成したかどうかに関係なく、任意のデータベースを削除 ( |
|
すべてのデータベースの一覧表示 |
(ビュー) |
(master データベースに接続する必要があります。) |
サーバーレベル管理と master データベース
SQL データベース サーバーは、データベースのグループを定義する抽象的なものです。SQL データベース サーバーに関連付けられているデータベースは、マイクロソフトのデータ センターに置かれた別々の物理コンピューターの中に存在している可能性があります。そのすべてに対してサーバーレベル管理を実行するには、master という名前の 1 つのデータベースを使用します。
master データベースによってログインが追跡され、どのログインにデータベースや他のログインを作成する権限があるかが追跡されます。ログインまたはデータベースの作成 (CREATE)、変更 (ALTER)、または削除 (DROP) を実行する際には常に、master データベースに接続する必要があります。master データベースには、ログインの表示に使用できる sys.sql_logins ビューと、データベースの表示に使用できる sys.databases ビューも用意されています。
注 |
|---|
USE コマンドによるデータベースの切り替えはサポートされていません。対象データベースに対して直接接続を確立します。 |
Windows Azure SQL データベースでは、内部設置型の SQL Server インスタンスと同じ方法で、ユーザーおよびオブジェクトのデータベースレベル セキュリティを管理できます。それぞれのコマンドで使用できるパラメーターのみが異なります。詳細については、「Transact-SQL リファレンス (Windows Azure SQL データベース)」を参照してください。
ログインの管理
ログインを管理するには、master データベースに接続して、サーバーレベル プリンシパル ログインを使用します。CREATE LOGIN、ALTER LOGIN、および DROP LOGIN の各ステートメントを使用できます。次の例では、login1 というログインを作成します。
-- first, connect to the master database CREATE LOGIN login1 WITH password='<ProvidePassword>';
注 |
|---|
| ログインを作成する際には、強力なパスワードを使用する必要があります。詳細については、「強力なパスワード」を参照してください。 |
新しいログインの使用
作成したログインを使用して Windows Azure SQL データベースに接続するには、まず CREATE USER コマンドを使用して、各ログインにデータベースレベルの権限を付与する必要があります。詳細については、「ログインのデータベース アクセスの許可」を参照してください。
一部のツールでは表形式データ ストリーム (TDS) の実装方法が異なるため、接続文字列でログインに SQL データベース サーバー名を付加する必要があります。その際には、<login>@<server> という表記を使用します。この場合は、@ 記号を使用してログインと SQL データベース サーバー名を区分します。たとえば、ログイン名が login1 であり、SQL データベース サーバーの完全修飾名が servername.database.windows.net である場合、接続文字列の username パラメーターは login1@servername のようにする必要があります。この制限により、ログイン名として選択できるテキストが限定されます。詳細については、「CREATE LOGIN (Windows Azure SQL データベース)」を参照してください。
ログインに対するサーバーレベル権限の付与
サーバーレベル プリンシパル以外のログインでサーバーレベル セキュリティを管理できるように、Windows Azure SQL データベースには 2 つのセキュリティ ロールが用意されています。ログインの作成に使用される loginmanager と、データベースの作成に使用される dbmanager です。master データベースのユーザーのみ、これらのデータベース ロールに追加することができます。
注 |
|---|
| ログインまたはデータベースを作成するには、(master の論理表現である) master データベースに接続する必要があります。 |
loginmanager ロール
内部設置型 SQL Server インスタンスの securityadmin 固定サーバー ロールと同様に、Windows Azure SQL データベースの loginmanager データベース ロールにはログインを作成する権限があります。新しいログインを作成できるのは、サーバーレベル プリンシパル ログイン (プロビジョニング処理で作成されたもの) または loginmanager データベース ロールのメンバーのみです。
dbmanager ロール
Windows Azure SQL データベース dbmanager データベース ロールは、内部設置型 SQL Server インスタンスの dbcreator 固定サーバー ロールと似ています。データベースを作成できるのは、サーバーレベル プリンシパル ログイン (プロビジョニング処理で作成されたもの) または dbmanager データベース ロールのメンバーのみです。dbmanager データベース ロールのメンバーになったユーザーは、SQL データベース CREATE DATABASE コマンドを使用してデータベースを作成できますが、このコマンドは master データベース内で実行する必要があります。詳細については、「CREATE DATABASE (Windows Azure SQL データベース)」を参照してください。
SQL データベースのサーバーレベル ロールを割り当てる方法
データベースや他のログインを作成できるログインや関連するユーザーを作成するには、次の手順に従います。
-
サーバーレベル プリンシパル ログイン (プロビジョニング処理で作成されたもの) の資格情報、または
loginmanagerデータベース ロールの既存のメンバーの資格情報を使用して master データベースに接続します。 -
CREATE LOGINコマンドを使用して、ログインを作成します。詳細については、「CREATE LOGIN (Windows Azure SQL データベース)」を参照してください。 -
CREATE USERコマンドを使用して、そのログインの新しいユーザーを master データベースに作成します。詳細については、「CREATE USER (Windows Azure SQL データベース)」を参照してください。 -
sp_addrolememeberストアド プロシージャを使用して、新しいユーザーをdbmanagerデータベース ロール、loginmanagerデータベース ロールのどちらか、またはその両方に追加します。
次のコード例は、ログイン (login1) および対応するデータベース ユーザー (login1User) を作成する方法を示しています。このユーザーは、master データベースへの接続中に、データベースまたは他のログインを作成することができます。
-- first, connect to the master database CREATE LOGIN login1 WITH password='<ProvidePassword>'; CREATE USER login1User FROM LOGIN login1; EXEC sp_addrolemember 'dbmanager', 'login1User'; EXEC sp_addrolemember 'loginmanager', 'login1User';
注 |
|---|
| ログインを作成する際には、強力なパスワードを使用する必要があります。詳細については、「強力なパスワード」を参照してください。 |
ログインのデータベース アクセスの許可
すべてのログインは master データベースに作成する必要があります。ログインが作成された後で、別のデータベースにそのログインのユーザー アカウントを作成できます。Windows Azure SQL データベースでは、内部設置型の SQL Server インスタンスと同じ方法でデータベース ロールもサポートします。
別のデータベースにユーザー アカウントを作成するには (ログインまたはデータベースをまだ作成していないとします)、次の手順に従います。
-
master データベースに接続します (
loginmanagerロールとdbmanagerロールを持つログインを使用します)。 -
CREATE LOGINコマンドを使用して、新しいログインを作成します。詳細については、「CREATE LOGIN (Windows Azure SQL データベース)」を参照してください。Windows 認証はサポートされません。 -
CREATE DATABASEコマンドを使用して、新しいデータベースを作成します。詳細については、「CREATE DATABASE (Windows Azure SQL データベース)」を参照してください。 -
新しいデータベースとの接続を確立します (データベースの作成に使用したログインを使用します)。
-
CREATE USERコマンドを使用して、新しいデータベースに新しいユーザーを作成します。詳細については、「CREATE USER (Windows Azure SQL データベース)」を参照してください。
次のコード例では、login1 という名前のログインと、database1 という名前のデータベースの作成方法を示します。
-- first, connect to the master database CREATE LOGIN login1 WITH password='<ProvidePassword>'; CREATE DATABASE database1;
注 |
|---|
| ログインを作成する際には、強力なパスワードを使用する必要があります。詳細については、「強力なパスワード」を参照してください。 |
次の例では、database1 という名前のデータベースに、ログイン login1 に対応する login1User という名前のデータベース ユーザーを作成する方法を示します。
-- Establish a new connection to the database1 database CREATE USER login1User FROM LOGIN login1;
Windows Azure SQL データベースにおけるこのようなデータベースレベルの権限モデルは、内部設置型の SQL Server インスタンスと同じです。詳細については、SQL Server オンライン ブックの次のトピックを参照してください。
ログイン、ユーザー、およびスキーマの管理方法に関するトピック
レッスン 2: データベース オブジェクトに対する権限の構成
注 |
|---|
| Windows Azure SQL データベースのセキュリティ関連の Transact-SQL ステートメントでは、使用できるパラメーターが多少異なる場合があります。詳細については、「Transact-SQL リファレンス (Windows Azure SQL データベース)」を参照してください。 |
ログインとデータベースの表示
SQL データベース サーバーのログインとデータベースを表示するには、master データベースの sys.sql_logins ビューと sys.databases ビューをそれぞれ使用します。次の例では、SQL データベース サーバーのすべてのログインおよびデータベースの一覧を表示する方法を示します。
-- first, connect to the master database SELECT * FROM sys.sql_logins; SELECT * FROM sys.databases;
参照
注