SQL Azureデータベースにユーザを追加する
Adding Users to Your SQL Azure Database – SQL Azure Team Blog – Site Home – MSDN Blogsを簡単に翻訳し紹介したエントリーです。
SQL Azure Portalを使用して、SQL Azureサーバを作成したとき、同時にユーザ名とパスワードを作成します。サーバ上の全データベースにアクセスすることができる管理者アカウントです。しかし、サーバ上の全て、もしくは一部のDBに他の人にも、フル権限または一部権限で、アクセスして欲しいと思うことがあります。このエントリーでは、SQL Azureデータベースに対してユーザアカウントを追加する方法を紹介します。
今のところ、SQL Azure Portalで、管理者アカウントを追加することはできません。追加するにはTransact-SQLを使用する必要があります。SQL Server Management Studio 2008 R2を使用してSQL AzureにTransact-SQLを実行します。SQL Server Management Studio 2008 R2はSQL Azureデータベースのユーザとログインを一覧で表示しますが、ユーザとログイン作成のGUIは提供されていません。
一覧には、ユーザーとログインが表示されている。
プロパティ的なメニューが表示されない。GUIでの操作方法を今のところ提供されていない。
ログインを作成する
ログインは、パスワードとログイン(ID)ペアになっており、全てのデータベースに同じパスワードでアクセスすることができます。ログインを作成するTransact-SQLは次のようなものです。
CREATE LOGIN readonlylogin WITH password='1231!#ASDF!a';
CREATE LOGINコマンドを実行するには、SQL Azureのマスターデータベースに(SQL Azure Portalで作成した)管理者アカウントで接続しなければなりません。
ユーザを作成する
ユーザは、データベスに対して作成し、ログインと紐付けます。ユーザを作成するデータベースに対して接続しなければなりません。多くの場合、マスターデータベース以外に接続することになります。ユーザを作成するTransact-SQLは次の用になります。
CREATE USER readonlyuser FROM LOGIN readonlylogin;
ユーザ権限
ユーザを作成した直後は、データベースに接続する権限はありません。アクセスする為の権限を付与する必要があります。次のTransact-SQLは、ユーザ「readonlyuser」に対して、データベース読み取り権限をdb_datareaderロールを使用して付与します。
EXEC sp_addrolemember 'db_datareader', 'readonlyuser';
ユーザとログインを削除する
幸い、SQL Server Management Studio 2008 R2はユーザとログインを削除することができます。オブジェクトエクスプローラーのツリーからセキュリティーノードを見つけます。ユーザまたはログインで右クリックをし、削除を選択します。
補足情報
SQL AzureはUSE文を使用することができません。これは、一つのスクリプトで、ログインとユーザを作成することができないことを意味しています。CREATE LOGIN と CREATE USERを実行するにはぞれぞれデータベースに接続詞直さなければなりません。
詳細は、Managing Databases and Logins in SQL Azureを確認してください。