AWS Directory Serviceを使ってAWSアカウントを簡単に切り替える方法

AWS Directory Service

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

こんにちは、せーのです。今日は最近かなりお世話になっているSwitch Accountの新しいやり方をご紹介します。この方法をマスターすると社内で使っているWindowsのActive Directoryをそのまま使用して開発者グループはこのアカウントのEC2とRDSのみ使える、経理はこちらのアカウントのCloudWatchが参照できる、等簡単にアカウントを超えた権限を割り当てることができるようになります。

とても便利なSwitch Account

AWSを業務で使っている方は本番、ステージングやサービス毎に複数のAWSアカウントを持っている方も珍しくありません。そのような場合にAWSアカウントを切り替えて作業するにはログアウト => ログインを繰り返さなくてはならず、昨今はセキュリティも強化されていてMFA必須になってきていますので何回もログアウト => ログインを繰り返しながらの作業はとても手間になります。
そこで最近はIAM Roleを使った[Switch Account]という機能が使えるようになり、ログアウトを繰り返す必要はなくなりました!私もしょっちゅう使っております。詳しくはこちらの記事を御覧ください。

今回はAWS Directory ServiceのSimple ADを使いフェデレーションユーザが簡単にアカウントを切り替える方法をご紹介します。

方法

Simple ADを作成する

それでは早速やっていきましょう。まずはDirectory Serviceを使ってActive Directoryを作成していきます。Management ConsoleからDirectory Serviceに行き、Simple ADを作成します。今回は[switchroletest.com]というドメイン名にしました。

swrole1

Directoryの作成を待ちます。5分くらいでActiveになります。

swrole2

作成したADにログインする

次に作成したDirectoryにログインしていきます。Simple ADを作成したVPCにEC2を立てます。Windows Server 2012 R2はSimple ADにてユーザーを作成できないバグがあるようなのでWindows Server 2012を選択します。

swrole7

立てたEC2にてSimple ADドメインに参加します。詳しくはこちらの記事を参考にして下さい。ネットワーク設定のDNSにSimple ADで作成されたDNSサーバーIPを設定します。

swrole3

コンピュータの変更よりSimple ADのドメインに参加して再起動します。

swrole4

Simple ADのドメインにAdministratorにてログインします。

  • ID : [ドメイン名]\Administrator
  • PASS : [Simple AD作成時に登録したパスワード]

ADツールをインストールします。

swrole5

Administrativeツール(Start画面にあります)から[Active Directory Users and Computers]を選択し、ユーザーを追加します。

swrole6

今回はユーザーを2人追加してみます。[test1][test2]とします。パスワードはWindows Server 2012のパスワードポリシーに従って下さい。大文字、小文字、数字が入っていれば大体大丈夫でしょう。

swrole8

これでEC2での作業はおしまいです。

Management Consoleからのアクセス許可を追加する

先程作成したSimple ADの詳細画面に移り、Management Consoleからのアクセスを許可します。画面下部に[Apps & Services]という欄があるのでそちらから設定します。

swrole11

アクセスURLを設定する

画面中段くらいにあるアクセスURLに任意の文字列を入れてアクセスURLを設定します。一応シングルサインオンもつけときます。

swrole10

ユーザー用のロールを追加する

先程作成したユーザーに対してアクセス権限を追加します。とりあえずPower Userをつけておきます。Management Consoleからのアクセス許可の横にある[Manage Access]というリンクをクリックします。

swrole12

ロールの作成画面が出てきますのでロールをつけていきます。ここらへんは他のサービスのロールのつけかたと同じですね。

swrole13

ロール名をつけて登録します。

swrole14

ここからはDirectory Service独自の設定です。先程EC2にて作成したユーザーに対して権限をつけていきます。私の場合は[test1]と[test2]になります。

swrole15

出来上がったロールを確認します。こんな感じになっていればOKです。これがスイッチ元の設定です。

swrole16-2

スイッチ先のアカウントにクロスアカウントのロールを作成する

次にスイッチ先にクロスアカウントでアクセスする権限をもたせます。クロスアカウント先にてIAMロールを新規作成し、クロスアカウントアクセスの権限をつけます。ここらへんの作業はこの記事を参考にしてみて下さい。

swrole17

ロール名をつけます。今回は[swroletest]としました。

swrole22

アカウントIDを記入するときには「スイッチ元」、つまりDirectory Serviceが立ち上がっているアカウントIDを入力します。

swrole18

今回はAdministrator権限をつけます。実用時にはこのアカウントにて操作させたい権限をつけるようにして下さい。

swrole19

swrole20

ロールをユーザーで絞る

作成したロールはスイッチ元のアカウントであれば誰でもスイッチできる状態なので、先程作ったユーザーのみスイッチできるように権限を絞ります。ロールを選択しポリシーを編集します。

swrole21

ポリシーをユーザーで絞ります。

swrole23

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:userid": [
            "*:test2",
            "*:test1"
          ]
        }
      }
    }
  ]
}

これで設定は完了です。

疎通確認

最後にスイッチできるかどうか確認します。
Directory Serviceを通じてのアクセスは先程Directory Serviceで設定したアクセスURLを使います。

https://swroletest.awsapps.com/console

表示されたログイン画面にてユーザー、パスワードを入力してログインします。

swrole24

あとはIAMユーザーでのスイッチと同じです。画面右上のアカウントの表示部分からSwitch Roleの画面を開くかスイッチ先で作成したロールのURLを叩きます。

swrole25

表示名を決めてボタンをクリックするとスイッチ出来ます。

swrole26

後はスイッチしたいアカウントにひたすらロールを設定していくのみです。

まとめ

いかがでしたでしょうか。今回はSimple ADで試しましたが、Directory Serviceは既存のActive Directoryと連結することも出来ますので、職場の特定のユーザーやグループにはこのアカウントの権現を与える、というような運用も可能になります。上手く使って正しい権限管理をしましょう。

参考サイト

AWS Cloud Roadshow 2017 福岡