0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[JAWS-UG CLI]Directory Service:#32-4 Management ConsoleへのSSO設定

Last updated at Posted at 2015-11-08

このハンズオンについて

  • このハンズオンでは、Directory Serviceで作成したディレクトリのユーザでManagement Consoleにログインするまでの作業を実施します。
  • 今回のハンズオンでは、AD-Connectorは対象外とします。
  • 一部の操作はManagement Consoleで実施します。
  • Macをお使いの方は、Windows Serverでリモートデスクトップ接続が出来るアプリをご用意ください。
  • Windows Serverをドメインに参加させるため、SSMを使用します。SSMが利用可能なリージョンを利用してください。この手順ではオレゴンを利用します。

前提条件

バージョン確認

このハンズオンは以下のバージョンで動作確認を行いました。

コマンド
aws --version
結果
aws-cli/1.9.5 Python/2.7.10 Linux/4.1.10-17.31.amzn1.x86_64 botocore/1.3.5

必要な権限

作業にあたっては、以下の権限を有したIAMユーザもしくはIAMロールを利用してください。

  • EC2に対するフルコントロール権限
  • Directory Serviceに関するフルコントロール権限
  • IAMに関するフルコントロール権限
  • SSMに関するフルコントロール権限

0. 準備

リージョンを指定

コマンド
export AWS_DEFAULT_REGION='us-west-2'

資格情報を確認

コマンド
aws configure list
結果
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************PZ4A         iam-role
secret_key     ****************AZ55         iam-role
    region                us-west-2              env    AWS_DEFAULT_REGION

変数の確認

コマンド
cat << ETX

    DS_ID: "${DS_ID}"

ETX
結果
    DS_ID: "ds-**********"

1. SSOの有効化

エイリアスの変更

エイリアスはグローバルでユニークである必要があります。
他の方と重複しないように修正してください。

コマンド
ALIAS='jawsug-20151109-1'

パラメータを確認

コマンド
cat << ETX

    DS_ID: "${DS_ID}"
    ALIAS: "${ALIAS}"

ETX
結果
    DS_ID: "d-**********"
    ALIAS: "jawsug-20151109-1"

エイリアスの作成

コマンド
aws ds create-alias --directory-id ${DS_ID} --alias ${ALIAS}
結果
{
    "DirectoryId": "d-**********",
    "Alias": "jawsug-20151109-1"
}

SSOの有効化

コマンド
aws ds enable-sso --directory-id ${DS_ID}
結果
(返値無し)

IAMロールの作成

ロールがないことを確認

コマンド
ROLE_NAME='ds-role'
aws iam get-role --role-name ${ROLE_NAME}
結果
A client error (NoSuchEntity) occurred when calling the GetRole operation: The role with name ds-role cannot be found.

Direcroty ServiceにAssume Roleさせる権限を定義します。

コマンド
TRUST_POLICY_FILE='Trust-Policy.json'
AWS_ID=<AWS_IDを代入してください>
コマンド
cat << EOF > ${TRUST_POLICY_FILE}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ds.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:externalid": "${AWS_ID}"
        }
      }
    }
  ]
}
EOF

cat ${TRUST_POLICY_FILE}
結果
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ds.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:externalid": "************"
        }
      }
    }
  ]
}

JSONファイルを検証

コマンド
jsonlint -q ${TRUST_POLICY_FILE}

IAMロールの作成

コマンド
aws iam create-role --role-name ${ROLE_NAME} --assume-role-policy-document file://${TRUST_POLICY_FILE}
結果
{
    "Role": {
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Action": "sts:AssumeRole",
                    "Principal": {
                        "Service": "ds.amazonaws.com"
                    },
                    "Effect": "Allow",
                    "Condition": {
                        "StringEquals": {
                            "sts:externalid": "********"
                        }
                    },
                    "Sid": ""
                }
            ]
        },
        "RoleId": "A********************",
        "CreateDate": "2015-10-12T02:51:12.964Z",
        "RoleName": "ds-role",
        "Path": "/",
        "Arn": "arn:aws:iam::************:role/ds-role"
    }
}

ディレクトリ上のユーザがAssumeRoleできるようになるための設定

Management Consoleにログインして実施します。
(CLIで実行することが出来ないようです。。。)

「Apps & Services」 → 「AWS Management Console」の「Manage Access」のリンクをクリック

AWS Directory Service Console.png

「Enable Access」をクリック

AWS Directory Service Console (1).png

「New Role」をクリック

AWS Directory Service Console (2).png

「Use Existing Role」をクリック

AWS Directory Service Console (4).png

作成したRoleを選択し、「Next Step」をクリック

AWS Directory Service Console (5).png

ユーザ名で検索し、権限を付与したいユーザを選択し、「Next Step」をクリック

AWS Directory Service Console (6).png

内容を確認し、「Create Role Assignments」をクリック

AWS Directory Service Console (7).png

ユーザにロールを割り当てることが出来たことを確認

AWS Directory Service Console (8).png

AWS Directory Service Console (9).png

動作確認

Management Consoleにディレクトリ上のユーザでアクセスできることを確認します。

ブラウザで以下のURLにアクセスします。
(出来れば、他のブラウザで確認を行うといいと思います。)

アクセス出来るまで、時間がかかる場合があります。(5~10分くらい)

https://<設定したALIAS>.awsapps.com/console/

コマンド
echo https://${ALIAS}.awsapps.com/console/
結果
https://jawsug-20151109-1.awsapps.com/console/

ログインする際には、#32-3で作成したユーザのユーザ名とパスワードを入力してください。

jawsug-20151109 - AWS Apps Authentication.png

最後に、Management Consoleからサインアウトします。

補足

ディレクトリ上のユーザには複数のIAMロールを割り当てることができ、その場合にはどのロールの権限でログインするか選択することが可能です。

jawsug-20151109 - AWS Apps Authentication (1).png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?