このハンズオンについて
- このハンズオンでは、Directory Serviceで作成したディレクトリのユーザでManagement Consoleにログインするまでの作業を実施します。
- 今回のハンズオンでは、AD-Connectorは対象外とします。
- 一部の操作はManagement Consoleで実施します。
- Macをお使いの方は、Windows Serverでリモートデスクトップ接続が出来るアプリをご用意ください。
- Windows Serverをドメインに参加させるため、SSMを使用します。SSMが利用可能なリージョンを利用してください。この手順ではオレゴンを利用します。
前提条件
-
この手順は、全部で5つの投稿から構成されており、本投稿は以下の投稿の内容を実施していることが前提となります。途中から実施した場合、変数が空欄のためにコマンドの実行に失敗する場合があります。
バージョン確認
このハンズオンは以下のバージョンで動作確認を行いました。
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」のリンクをクリック
「Enable Access」をクリック
「New Role」をクリック
「Use Existing Role」をクリック
作成したRoleを選択し、「Next Step」をクリック
ユーザ名で検索し、権限を付与したいユーザを選択し、「Next Step」をクリック
内容を確認し、「Create Role Assignments」をクリック
ユーザにロールを割り当てることが出来たことを確認
動作確認
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で作成したユーザのユーザ名とパスワードを入力してください。
最後に、Management Consoleからサインアウトします。
補足
ディレクトリ上のユーザには複数のIAMロールを割り当てることができ、その場合にはどのロールの権限でログインするか選択することが可能です。