SQL Azure におけるデータベースとログインの管理
Windows Azure Platform
Microsoft SQL Azure データベースでは、サービスにサインアップする際に、SQL Azure サーバー、master という名前のデータベース、および SQL Azure サーバーのサーバーレベル プリンシパルとなるログインがプロビジョニング プロセスによって作成されます。このログインは、オンプレミス版の SQL Server のサーバーレベル プリンシパル sa に似ています。
この SQL Azure サーバーレベル プリンシパル アカウントは常に、サーバーレベルとデータベースレベルのすべてのセキュリティを管理するためのアクセス許可を持ちます。このトピックでは、サーバーレベル プリンシパルと他のアカウントを使用して SQL Azure ログインおよびデータベースを管理する方法を説明します。
SQL Azure セキュリティ管理の概要
SQL Azure のセキュリティ管理は、オンプレミス版の SQL Server のセキュリティ管理と基本的に同じです。まず、データベースレベルのセキュリティ管理は、使用できるパラメーターの違いを除くとほとんど同じです。ただし、SQL Azure データベースは複数の物理コンピューターにまたがることがあるため、SQL Azure のサーバーレベル管理には別の方法が採られます。次の表に、オンプレミス SQL Server と SQL Azure のセキュリティ管理の違いをまとめます。
相違点 | オンプレミス SQL Server | SQL Azure |
---|---|---|
サーバーレベルのセキュリティを管理する場所 | SQL Server Management Studio のオブジェクト エクスプローラー の Security フォルダー | master データベース |
ログインを作成するためのサーバーレベル セキュリティ ロール |
詳細は「サーバーレベルのロール (英語)」を参照 |
loginmanager |
ログインを管理するためのコマンド |
|
(パラメーターにいくつかの制限がある。master データベースに接続する必要がある) |
すべてのログインを表示するビュー | sys.sql_logins |
(master データベースに接続する必要がある) |
データベースを作成するためのサーバーレベル ロール |
詳細は「サーバーレベルのロール (英語)」を参照 |
dbmanager |
データベースを作成するためのコマンド | CREATE DATABASE |
(パラメーターにいくつかの制限がある。master データベースに接続する必要がある) |
データベースの削除 | DROP DATABASE |
dbmanager ロールを保有するユーザーは、作成者に関係なく、任意のデータベースに対して |
すべてのデータベースを一覧表示するビュー |
(ビュー) |
(master データベースに接続する必要がある) |
サーバーレベル管理とマスター データベース
SQL Azure サーバーは、データベースのグループを定義するための抽象化された要素です。1 つの SQL Azure サーバーに関連付けられるデータベースは、マイクロソフトのデータ センターにある複数の物理コンピューターに配置できます。これらすべてのデータベースに対するサーバーレベル管理は、master という 1 つのデータベースから行います。
master データベースは、ログインを記録するほか、データベースや他のログインの作成権限を持つログインを管理します。ログインやデータベースに対して CREATE
、ALTER
、または DROP
を実行する際は、master データベースに接続する必要があります。master データベースにも、ログインを表示するための sys.sql_logins
ビューと、データベースを表示するための sys.databases
ビューがあります。
注意
USE
コマンドによるデータベースの切り替えはサポートされていません。ターゲット データベースに直接接続を確立してください。
SQL Azure のユーザーとオブジェクトのデータベースレベル セキュリティは、オンプレミス版の SQL Server と同じ方法で管理できます。相違点は、それぞれのコマンドで使用できるパラメーターだけです。詳細については、「Transact-SQL リファレンス (SQL Azure データベース) (英語)」を参照してください。
ログインの管理
master データベースに接続し、サーバーレベル プリンシパル ログインを使用してログインを管理します。CREATE LOGIN
、ALTER LOGIN
、DROP LOGIN
の各ステートメントを使用できます。次の例は、login1
という名前のログインを作成しています。
-- first, connect to the master database
CREATE LOGIN login1 WITH password=‘<ProvidePassword>‘;
注意
ログインを作成する場合は、強力なパスワードを使用する必要があります。詳細については、「強力なパスワード (英語)」を参照してください。
新しいログインの使用
作成したログインを使用して SQL Azure に接続するには、まず CREATE USER
コマンドを使用して、各ログインにデータベースレベルのアクセス許可を付与する必要があります。詳細については、「ログインにデータベースレベルのアクセス許可を付与する」を参照してください。
表形式データ ストリーム (TDS) の実装方法が異なるツールもあります。その場合は、<login>@<server>
の形式を使用して、接続文字列内のログイン名に SQL Azure サーバー名を追加する必要があります。ログイン名と SQL Azure サーバー名は @
記号で区切ります。たとえば、ログイン名が login1
で、SQL Azure サーバーの完全修飾名が servername.database.windows.net
の場合、接続文字列のユーザー名パラメーターは login1@servername
になります。この制約により、ログイン名に使用できるテキストが制限されます。詳細については、「CREATE LOGIN (SQL Azure データベース)」を参照してください。
ログインにサーバーレベルのアクセス許可を付与する
サーバーレベル プリンシパル以外のログインでサーバーレベル セキュリティを管理できるように、SQL Azure には、loginmanager
(ログインの作成) および dbmanager
(データベースの作成) という 2 つのセキュリティ ロールが用意されています。これらのロールは、master データベースでユーザーに割り当てる必要があります。
注意
ログインまたはデータベースを作成するには、master データベースに接続する必要があります。
loginmanager ロール
オンプレミス版の SQL Server の securityadmin
ロールと同様に、SQL Azure でログインを作成するには loginmanager
ロールが必要です。他のログインを作成できるのは、プロビジョニング プロセスによって作成されたサーバーレベル プリンシパル ログインか、loginmanager
ロールを持つログインだけです。
dbmanager ロール
SQL Azure dbmanager
ロールは、オンプレミス版の SQL Server の dbcreator
ロールに似ています。データベースの作成には、このロールが必要です。データベースを作成できるのは、プロビジョニング プロセスによって作成されたサーバーレベル プリンシパル ログインか、dbmanager
ロールを持つログインだけです。dbmanager
ロールを持つログインであれば、SQL Azure CREATE DATABASE
コマンドを使用してデータベースを作成できますが、このコマンドは master データベースで実行する必要があります。詳細については、「CREATE DATABASE (SQL Azure データベース)」を参照してください。
SQL Azure サーバーレベル ロールを割り当てる方法
データベースまたは他のログインを作成するためのログインを作成するには、次の手順を実行します。
- master データベースに接続します。
CREATE LOGIN
コマンドを使用して、ログインを作成します。詳細については、「CREATE LOGIN (SQL Azure データベース)」を参照してください。CREATE USER
コマンドを使用して、master データベースにこのログインに対応する新しいユーザーを作成します。詳細については、「CREATE USER (SQL Azure データベース)」を参照してください。- ストアド プロシージャ
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 データベースで作成する必要があります。ログインを作成したら、別のデータベースに、そのログインに対応するユーザー アカウントを作成できるようになります。SQL Azure は、オンプレミス版の SQL Server と同じ方法でデータベース ロールをサポートします。
別のデータベースでユーザー アカウントを作成するには、次の手順を実行します。ただし、ログインもデータベースもまだ作成していないとします。
loginmanager
ロールとdbmanager
ロールを持つログインを使用して、master データベースに接続します。CREATE LOGIN
コマンドを使用して、新しいログインを作成します。詳細については、「CREATE LOGIN (SQL Azure データベース)」を参照してください。Windows 認証はサポートされていません。CREATE DATABASE
コマンドを使用して、新しいデータベースを作成します。詳細については、「CREATE DATABASE (SQL Azure データベース)」を参照してください。- データベースを作成したログインを使用して、新しいデータベースへの接続を確立します。
CREATE USER
コマンドを使用して、新しいデータベースに新しいユーザーを作成します。詳細については、「CREATE USER (SQL Azure データベース)」を参照してください。
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;
この SQL Azure のデータベースレベルのアクセス許可モデルは、オンプレミス版の SQL Server と同じです。詳細については、SQL Server オンライン ブックの次のトピックを参照してください。
ID およびアクセス制御 (データベース エンジン) (英語)
ログイン、ユーザー、およびスキーマの管理方法に関するトピック (英語)
レッスン 2: データベース オブジェクトに対する権限の構成 (英語)
注意
SQL Azure のセキュリティ関連の Transact-SQL ステートメントは、使用できるパラメーターがわずかに異なります。詳細については、「Transact-SQL リファレンス (SQL Azure データベース) (英語)」を参照してください。
ログインとデータベースの表示
SQL Azure サーバーのログインとデータベースを表示するには、master データベースの sys.sql_logins
ビューと sys.databases
ビューをそれぞれ使用します。次の例は、SQL Azure サーバーのすべてのログインとデータベースを一覧表示する方法を示しています。
-- first, connect to the master database
SELECT * FROM sys.sql_logins;
SELECT * FROM sys.databases;
参照
概念
セキュリティのガイドラインと制限事項 (SQL Azure データベース) (英語)
SQL Azure プロビジョニング モデル
ページのトップへ