[アップデート]RDS for SQL ServerがAWSアカウントとVPCを介したドメイン参加をサポートするようになりました

2020.02.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィスの林です。

2020年2月14日(金)の公式アナウンスにて、「RDS for SQL Serverは、マネージドMicrosoft ADを使用してAWSアカウントとVPCを介したドメインへの参加をサポートするようになりました」と発表がありました。公式ページはこちら

アップデート概要

アップデートの概要の前に少しだけ事前知識としてSQL Serverの認証方法の種類を説明させて頂きます。
「RDS for SQL Server」に限らず「Microsoft SQL Server」には大きく2種類のログイン方法があります。(今回はAzure連携の認証は考えないこととします)

  • SQLServer認証:SQL Server独自の認証機構を使用
  • Windows認証:ActiveDirectoryやローカルWindowsの認証機構を使用(ログインしているユーザー情報を使用)

    今回ActiveDirectoryを使う『Windows認証』に関連する部分でアップデートがありました。

    いままで

    いままでRDS for SQL Serverでは、ActiveDirectoryの認証情報を使ってログインする場合、既に他のVPCや他のアカウントでマネージドMicrosoftADが立っていてもRDS for SQL ServerをデプロイするVPCと同じVPCにマネージドMicrosoftADを立てる必要がありました。

    これから

    今回のアップデートで、もともとの制約であった『RDS for SQL ServerをデプロイするVPCと同じVPCにマネージドMicrosoftADを立てる必要がある』という部分が取り除かれました。RDS for SQL Serverを立てるVPCにマネージドMicrosoftADが居なくてもいいとのことなので、VPC跨ぎの構成や、ディレクトリ共有を使ったアカウント跨ぎの構成も取れることとなります。

    何がうれしいか

    うれしいこと

  • 手間が省ける
  • コストの削減に繋げられる
  • わざわざRDS for SQL Serverと同じVPCにマネージドMicrosoftADをデプロイする必要性がなくなるためそれだけで手間が省けます。さらにマネージドMicrosoftADは料金がかかるサービスなのでコストの削減にも繋がります。

    やってみた

    VPC跨ぎのケースを試していきます。

    前提

  • ディレクトリサービスでマネージドMicrosoftADを作成済みであること
  • データベースを作成するネットワークとディレクトリサービスがあるネットワーク間で通信ができること

    RDSでデータベースの作成から「Microsoft SQL Server」を選択します。

    今回は「SQL Server Standard Edition」を選択します。バージョンは本日(2020年2月17日)時点で最新のものを選択します。

    少し下にスクロールすると「Microsoft SQL Server Windows認証」という設定項目があります。有効化にチェックを入れ、作成済みのディレクトリを選択します。なお、同一アカウントの場合、通信が出来ない別VPCであっても参照先として作成済みのディレクトリが選択できてしまいます。事前にRDSを作成するネットワークと認証を行うディレクトリが作成されているネットワーク間で通信が出来ることを確認しておきます。

    画面を下にスクロールして「データベースの作成」を選択します。

    データベースが作成されました。

    ディレクトリを見てみると指定したディレクトリが表示されており、ディレクトリステータスも「joined」になっていることが分かります。

    続いてログインできるか確認していきます。今回はEC2(Windows 2019)にSQL Server Management Studioを入れてログインの動作を見ていきます。初めにWindows認証が出来るようにSQL Server側に設定を加えてあげる必要があります。そのため初回のみ「SQL Server認証」でログインします。ユーザーとパスワードはRDS作成時に指定したパラメータです。

    エンドポイントを右クリックし「New Query」を選択します。

    今回はディレクトリ内にdblogingroupというグループを新規作成して、そのグループに所属しているユーザーtest123でSQL Serverにログインできるようにしたいと思います。

    下記コマンドを入力し実行し、ディレクトリ内のdblogingroupに所属するユーザーであればWindows認証できるようにします。

    CREATE LOGIN [mydc\dblogingroup] FROM WINDOWS WITH DEFAULT_DATABASE = [master],
       DEFAULT_LANGUAGE = [us_english];

    dblogingroupに所属させたログイン用のユーザーtest123でWindowsにログインしなおし、先ほどと同じようにSQL Server Management Studioを立ち上げます。今回は「Windows認証」を選択します。するとユーザー名、パスワードの部分がグレーアウトになり入力できないことが分かります。これは現在ログインしているユーザー情報を用いてSQL Serverにログインするためです。

    dblogingroupに所属するtest123でログイン出来ました。

    現在WindowsにログインしているユーザーでSQL Serverにログインしていることが分かります。

    別アカウント構成での検証も行いましたがディレクトリ共有が出来ており、データベースを作成するネットワークとディレクトリサービスが存在するネットワークが通信出来ていれば同様の手順で進めることが出来ます。

    まとめ

    リソースが増えると管理も煩雑になってしまいます。今回のようなシステムの構成をシンプルにスマートに出来るアップデートは非常に嬉しいですね!

    以上、大阪オフィスの林がお送りしました!

    参考

    https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_SQLServerWinAuth.html