Amazon Web Services ブログ
Amazon RDS for SQL Server でマスターユーザーの権限をクローンする方法
新しい Amazon Relational Database Service (Amazon RDS) for SQL Server インスタンスを作成すると、そのデータベースインスタンスに対して特定の権限がマスターユーザーに付与されます。アプリケーションでマスターユーザーを直接使用しないことを強くお勧めします。代わりに、最小権限の原則とベストプラクティスに従い、アプリケーションに必要な最小限の権限を持つデータベースユーザーを作成してください。
この手法は、次のようなユースケースに適用できます。
- アプリケーション固有の SQL Server ログインを使用する代わりにマスターユーザーを使用する
- セキュリティと説明責任のために、データベース管理者 (DBA) に名前付きアカウントを使用する
- Amazon RDS for SQL Server に接続するアプリケーションとサービスに対して、最小権限のセキュリティモデルを実装し、特定の名前付きアカウントを使用する
この投稿では、マスターユーザーを新しいログインにクローンし、必要最小限の権限を確認する方法について説明します。アプリケーションに必要のない権限を削除することで、最小権限の セキュリティモデルを実装できます。
ソリューション概要
このソリューションでは、マスターユーザーをクローンするために以下の手順を実行します。
- ユーザーを複製したい環境で、
usp_rds_clone_login
という名前のストアドプロシージャを作成します。これは、SQL Server Management Studio (SSMS) を使用して Amazon RDS for SQL Server インスタンスに接続することで実現できます。 - ストアドプロシージャを実行すると、実行した時点での権限が記述された T-SQL スクリプトが生成されます。
- SSMS の結果ペインからスクリプトをコピーし、新しいクエリウィンドウで実行します。
ストアドプロシージャが実行された後、マスターログインと同様のサーバーレベルおよびデータベースレベルの権限を持つ「create login」スクリプトが生成されます。
前提条件
RDS インスタンスでマスターユーザーをクローンする前に、次の準備が整っている必要があります。
- Amazon RDS for SQL Server インスタンス
- データベースへの接続が可能な SSMS
- 必要な権限を持つユーザー
ストアドプロシージャの作成
ユーザーを複製したい環境で、usp_rds_clone_login
(ダウンロード) という名前のストアドプロシージャを作成します。次のステップで、特定のログインアカウント、データベースユーザー、サーバーレベルの権限、およびデータベースレベルの権限のクローンを作成するためにこのストアドプロシージャを使用します。Amazon RDS for SQL Server のシステムデータベース以外の任意のユーザーデータベースにストアドプロシージャを作成できます。
プロセスの一部として、スクリプトは次のアクションを実行します。
- 指定されたパスワードを使用して新しいログインを作成する
- 新しいログインにサーバーロールのメンバーシップを割り当てる
- 新しいログインにサーバーレベルの権限を割り当てる
LoginToDuplicate
に従って、新しいログイン用のデータベースユーザーを作成するLoginToDuplicate
に従って、新しいユーザーにデータベースロールメンバーシップを割り当てるLoginToDuplicate
に従って、新しいユーザーにデータベースレベルの権限を割り当てる
ストアドプロシージャを実行する際、ストアドプロシージャを実行するユーザーにこれらの権限を付与するアクセス権がない場合、スクリプトは結果を生成しません。ユーザーに権限を付与するアクセス権がない場合、出力スクリプトにはその権限が表示されません。これは、スクリプトにアクセスするために使用されるログインに表示権限がないためです。さらに、権限を付与する権限がないのに手動で権限スクリプトを追加しようとするとスクリプトは失敗します。
ストアドプロシージャの実行
ストアドプロシージャを作成した後、新しい T-SQL ウィンドウを開き、次の形式でストアドプロシージャを実行します。スクリプトを実行する前に、キーボードの CTRL + T を押して、結果がテキスト形式になっていることを確認してください。
次は、管理者アカウントを新しいドメインユーザーアカウントにクローニングした際の出力例です。
出力:
出力されたスクリプトをコピーして実行
スクリプトが出力を生成した後、SSMS の結果タブから出力されたスクリプトをコピーし、新しいクエリウィンドウから実行します。スクリプトが実行された後、マスターログインと同様のサーバーレベルとデータベースレベルの権限を持つ新しいログインアカウントが作成されます。
この例では、SSISDB データベースの ssis_admin と ssis_logreader の権限は除外されています。これらの権限が必要な場合は、別途指定してください。
クリーンアップ
ログインを複製した後、(例えば、コンプライアンスの理由で) ストアドプロシージャを保持したくない場合は、次のスクリプトを使用してドロップできます。
結論
この投稿では、Amazon RDS for SQL Server でマスターユーザーを新しいログインにクローンする方法について説明しました。また、アプリケーションでマスターユーザーを使用しないための主な考慮事項とベストプラクティスについても説明しました。このソリューションは、ビジネスニーズに必要な最小限の権限を持つ新しいログインを作成するのに役立ちます。
翻訳はソリューションアーキテクトの Yoshinori Sawada が担当しました。原文は こちらです。著者について
Alvaro Costa-Neto は AWS のデータベーススペシャリストソリューションアーキテクトで、クラウド上でのデータベースソリューションの設計と実装を支援しています。彼はデータベース技術に興味があり、主に Microsoft SQL Server を使って 19 年以上にわたり活動してきました。彼はフロリダ州クレルモントに妻と 2 人の子供たちと住んでおり、家族と航空と旅行の愛好家です。仕事を離れると、家族や友人とクックアウトを主催したり、新しい場所を探索したりするのが好きです。
Rakesh Ramanukolanu は、Amazon Web Services のシニアデータベーススペシャリストソリューションアーキテクトです。様々な業界のお客様に対し、SQL Server のワークロードを Amazon RDS や Amazon RDS Custom のようなマネージド データベース プラットフォームに設計、移行、最適化するのを支援しています。
Mesgana Gormley は Amazon Web Services のシニアデータベーススペシャリストソリューションアーキテクトです。彼女は Amazon RDS チームで働き、お客様に技術的なガイダンスを提供し、リレーショナルデータベースワークロードの移行、設計、展開、最適化を支援しています。