名前空間の作成

名前空間とグループ・ユーザー

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

QuickSightセットアップイメージ

Alt text

名前空間の作成

以下のコマンドを実行します。

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"
}