QuickSightでテナントを分割するため以下のオブジェクトを作成します。
- 名前空間(Namespaces)
- QuickSight上で分離されたテナント
- グループ
- QuickSightの論理的なグループ
- ユーザー
- QuickSightのユーザー
本ワークショップでは以下の構造を作成します。
- 名前空間:default
テナント全体を管理する名前空間
- グループ:なし
- ユーザ:ログイン中のIAMユーザ
アカウントの全体管理ユーザ(ADMIN)
- 名前空間:NS1
テナント向け名前空間1
- グループ:dashboard-membders
- ユーザ:QSDemoUser1
NS1の作成者ユーザ(AUTHOR)
- ユーザ:QSDemoUser2
NS1の閲覧者ユーザ(READER)
- 名前空間:NS2
テナント向け名前空間2
- グループ:dashboard-membders
- ユーザ:QSDemoUser3
NS2の作成者ユーザ(AUTHOR)
- ユーザ:QSDemoUser4
NS2の閲覧者ユーザ(READER)
名前空間(Namespaces)については現状以下の制約があります。
・カスタム名前空間( default 以外の名前空間)は、Federated Single-Sign Onユーザーのみがアクセスできます。
・以下の機能を使用する必要がある場合は、カスタム名前空間の代わりに default の名前空間を使用します。
・パスワードベースのログイン
・資格情報ベースの Active Directory ログイン
・行レベル セキュリティ (RLS) を使用するデータセット
・その他の制約については以下の公式ドキュメントを参照してください。
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/namespaces.html
以下のコマンドを実行します。
aws quicksight create-namespace --aws-account-id $AWSACCOUNTID --namespace NS1 --identity-store QUICKSIGHT
aws quicksight create-namespace --aws-account-id $AWSACCOUNTID --namespace NS2 --identity-store QUICKSIGHT
次のような結果が表示されれば成功です。
{
"Status": 202,
"Name": "NS1",
"CapacityRegion": "us-east-1",
"CreationStatus": "CREATING",
"IdentityStore": "QUICKSIGHT",
"RequestId": "4bcf8448-ff48-4bff-beb8-695ec4594403"
}
{
"Status": 202,
"Name": "NS2",
"CapacityRegion": "us-east-1",
"CreationStatus": "CREATING",
"IdentityStore": "QUICKSIGHT",
"RequestId": "4bcef668-b98a-4c89-a97b-16f0e46f5cf9"
}
CLIを使用してユーザーを作成します。
cat <<EOF > register-QSDemoUser1.json
{
"IdentityType": "QUICKSIGHT",
"Email": "QSDemoUser1@QShandson.com",
"UserRole": "AUTHOR",
"AwsAccountId": "$AWSACCOUNTID",
"Namespace":"NS1",
"UserName": "QSDemoUser1"
}
EOF
cat <<EOF > register-QSDemoUser2.json
{
"IdentityType": "QUICKSIGHT",
"Email": "QSDemoUser2@QShandson.com",
"UserRole": "READER",
"AwsAccountId": "$AWSACCOUNTID",
"Namespace":"NS1",
"UserName": "QSDemoUser2"
}
EOF
cat <<EOF > register-QSDemoUser3.json
{
"IdentityType": "QUICKSIGHT",
"Email": "QSDemoUser3@QShandson.com",
"UserRole": "AUTHOR",
"AwsAccountId": "$AWSACCOUNTID",
"Namespace":"NS2",
"UserName": "QSDemoUser3"
}
EOF
cat <<EOF > register-QSDemoUser4.json
{
"IdentityType": "QUICKSIGHT",
"Email": "QSDemoUser4@QShandson.com",
"UserRole": "READER",
"AwsAccountId": "$AWSACCOUNTID",
"Namespace":"NS2",
"UserName": "QSDemoUser4"
}
EOF
aws quicksight register-user --cli-input-json file://register-QSDemoUser1.json
aws quicksight register-user --cli-input-json file://register-QSDemoUser2.json
aws quicksight register-user --cli-input-json file://register-QSDemoUser3.json
aws quicksight register-user --cli-input-json file://register-QSDemoUser4.json
次のような結果が表示されれば成功です。
{
"Status": 201,
"User": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS1/QSDemoUser1",
"UserName": "QSDemoUser1",
"Email": "QSDemoUser1@QShandson.com",
"Role": "AUTHOR",
"Active": false,
"PrincipalId": "user/d-906761fc33/c5a59252-5f0c-4306-80c5-26fa7f9fb5fc"
},
"UserInvitationUrl": "https://signin.aws.amazon.com/inviteuser?token=110TDL553FgU8FBbwjk69wrZQrmaQd7muC2_ZNevpGC_rN5LOrdZ3BhavI-w_tlBEKa2BZ9j4rNWdhqlWJcidVG7AXATMRgPo7yD1HdDX7VYLhwwM8tpyHnCCT4d2CyeuTJFnFqGx4iiLWJ_mBHNhxoD4qQ2V8hIRFj2TbQnEJYLZ6UHnd-DFCAwNLQIWn8Ht5oHpM8W9KBMMb8A",
"RequestId": "22f571c9-9464-4fa5-a2e3-32469fd0fd9e"
}
{
"Status": 201,
"User": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS1/QSDemoUser2",
"UserName": "QSDemoUser2",
"Email": "QSDemoUser2@QShandson.com",
"Role": "READER",
"Active": false,
"PrincipalId": "user/d-906761fc33/5621bbec-e29d-49f3-81d0-907369882d4a"
},
"UserInvitationUrl": "https://signin.aws.amazon.com/inviteuser?token=11OvZQW6KD_BpSxLLLwAQwuoBGad7xJfeC5757PAkpOijFUG_-GW0zcJ5IKFVD8ywfu4r8mFpN9SUJKUlYhzFoiRfqy2P3zNnEEwBRf2An6utdA0xc_wsbd9TZSp3ccG_AhZWbLFogFO2KWfWXS4P6eqyYUkl3OFG5keSsNF1dfA7qr86O_xm6W4RqpuIx5OUXY8n5Jg0a3c4vUQ",
"RequestId": "16befa29-c7d7-4ac1-9565-a8f50a27997a"
}
{
"Status": 201,
"User": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS2/QSDemoUser3",
"UserName": "QSDemoUser3",
"Email": "QSDemoUser3@QShandson.com",
"Role": "AUTHOR",
"Active": false,
"PrincipalId": "user/d-906761fc34/2c2f59f2-7b44-4f63-87eb-77286ff93767"
},
"UserInvitationUrl": "https://signin.aws.amazon.com/inviteuser?token=11vY3qc97NvjKi48efsE7hg9O3bllDb80J8Hj1ydzATlpAMuO-S6NtrPaMMpvTuU67Bc9y4WonIfNTCIHf1_cAhTDo_SozS3-XnXNB2jD68gvmflfu7FIZ-KoAR3v0_ZYc2j9RIOhZ7II_ojWtaoFbw_uXcbTcaztX7Nhc1ipiRDTqKkNVlPvK3W-UTP05fTYYW0UBvlDnHYRRxQ",
"RequestId": "243c3fd9-575a-447a-9604-e4b99645329a"
}
{
"Status": 201,
"User": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS2/QSDemoUser4",
"UserName": "QSDemoUser4",
"Email": "QSDemoUser4@QShandson.com",
"Role": "READER",
"Active": false,
"PrincipalId": "user/d-906761fc34/ec95cdeb-0441-4c8d-962c-79165a67b143"
},
"UserInvitationUrl": "https://signin.aws.amazon.com/inviteuser?token=11cw7C86a6yp3-y127OlWwHQWSF3TE42bv8Zv0G_uvJM_d1ZPgF2EBIdgImCW2Ii-PVuEHkn2a02VJPWSnMRB-sbWDjqQz7BsCEPTH5QkCDtn5dBCQOQJbmhIvwFtnCQbj4ltk1YikuI7W6R0Xg_C1yRTZNtxx2DZWDVt0n20lkMBv0lhjHmorrkWPps9loZ3YkqZ7UTGWyfDmtA",
"RequestId": "84fbecd9-0138-494e-84ff-801cb651f0b8"
}
以下のコマンドを実行し、QuickSightのグループを作成します。
aws quicksight create-group --aws-account-id $AWSACCOUNTID --namespace 'NS1' --group-name 'dashboard-members'
aws quicksight create-group --aws-account-id $AWSACCOUNTID --namespace 'NS2' --group-name 'dashboard-members'
次のような結果が表示されれば成功です。
{
"Status": 201,
"Group": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:group/NS1/dashboard-members",
"GroupName": "dashboard-members",
"PrincipalId": "group/d-906761fc33/e6c25e42-c9c3-4aa7-911e-051e6fcd3f96"
},
"RequestId": "6186c2fa-f776-40cd-9be6-eb030d714f31"
}
{
"Status": 201,
"Group": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:group/NS2/dashboard-members",
"GroupName": "dashboard-members",
"PrincipalId": "group/d-906761fc34/ee575006-a5dd-4495-b452-a51021166a10"
},
"RequestId": "b903715f-9c6a-4651-b29f-b30755e3e489"
}
以下のコマンドを実行し、QuickSightのグループとユーザーを紐づけます。
aws quicksight create-group-membership --aws-account-id $AWSACCOUNTID --namespace 'NS1' --group-name 'dashboard-members' --member-name 'QSDemoUser1'
aws quicksight create-group-membership --aws-account-id $AWSACCOUNTID --namespace 'NS1' --group-name 'dashboard-members' --member-name 'QSDemoUser2'
aws quicksight create-group-membership --aws-account-id $AWSACCOUNTID --namespace 'NS2' --group-name 'dashboard-members' --member-name 'QSDemoUser3'
aws quicksight create-group-membership --aws-account-id $AWSACCOUNTID --namespace 'NS2' --group-name 'dashboard-members' --member-name 'QSDemoUser4'
次のような結果が表示されれば成功です。
{
"Status": 200,
"GroupMember": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS1/QSDemoUser1",
"MemberName": "QSDemoUser1"
},
"RequestId": "693d2a33-529c-47b5-8191-798edebc2ee9"
}
{
"Status": 200,
"GroupMember": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS1/QSDemoUser2",
"MemberName": "QSDemoUser2"
},
"RequestId": "27550082-90b9-4894-9dfc-addd733fbfa7"
}
{
"Status": 200,
"GroupMember": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS2/QSDemoUser3",
"MemberName": "QSDemoUser3"
},
"RequestId": "26a05645-e56e-4b0a-86d7-285eb86724eb"
}
{
"Status": 200,
"GroupMember": {
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS2/QSDemoUser4",
"MemberName": "QSDemoUser4"
},
"RequestId": "b140269e-6ae3-4fd5-af6a-aeb08dfae5f4"
}
ここまでで作成したユーザの状態を確認します。
aws quicksight list-users --aws-account-id $AWSACCOUNTID --namespace 'default'
aws quicksight list-users --aws-account-id $AWSACCOUNTID --namespace 'NS1'
aws quicksight list-users --aws-account-id $AWSACCOUNTID --namespace 'NS2'
次のような結果が表示されれば成功です。
aws quicksight list-users --aws-account-id $AWSACCOUNTID --namespace 'default'
{
"Status": 200,
"UserList": [
{
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/default/"$IAMUSERNAME"",
"UserName": ""$IAMUSERNAME"",
"Email": "tarmiyaz@amazon.co.jp",
"Role": "ADMIN",
"Active": true,
"PrincipalId": "federated/iam/AIDAYDSJ4XUCSRSKGE7B2"
}
],
"RequestId": "978ecfe0-d679-49c3-aec4-980828c31595"
}
aws quicksight list-users --aws-account-id $AWSACCOUNTID --namespace 'NS1'
{
"Status": 200,
"UserList": [
{
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS1/QSDemoUser1",
"UserName": "QSDemoUser1",
"Email": "QSDemoUser1@QShandson.com",
"Role": "AUTHOR",
"Active": false,
"PrincipalId": "user/d-906761fc33/c5a59252-5f0c-4306-80c5-26fa7f9fb5fc"
},
{
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS1/QSDemoUser2",
"UserName": "QSDemoUser2",
"Email": "QSDemoUser2@QShandson.com",
"Role": "READER",
"Active": false,
"PrincipalId": "user/d-906761fc33/5621bbec-e29d-49f3-81d0-907369882d4a"
}
],
"RequestId": "335e2f49-d75f-4ebb-99eb-959d173af80d"
}
aws quicksight list-users --aws-account-id $AWSACCOUNTID --namespace 'NS2'
{
"Status": 200,
"UserList": [
{
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS2/QSDemoUser3",
"UserName": "QSDemoUser3",
"Email": "QSDemoUser3@QShandson.com",
"Role": "AUTHOR",
"Active": false,
"PrincipalId": "user/d-906761fc34/2c2f59f2-7b44-4f63-87eb-77286ff93767"
},
{
"Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/NS2/QSDemoUser4",
"UserName": "QSDemoUser4",
"Email": "QSDemoUser4@QShandson.com",
"Role": "READER",
"Active": false,
"PrincipalId": "user/d-906761fc34/ec95cdeb-0441-4c8d-962c-79165a67b143"
}
],
"RequestId": "9467e173-1e50-41f0-8091-d465b34bcde9"
}