はじめに
QuickSight を会社全体に展開しようと思った時に、重要な検討事項の一つにアカウント管理があります。QuickSight 上でローカルユーザーを作成出来ますが、新入社員や退職などに追従するのは大変です。そこで会社全体として使っているアカウント管理基盤が、SAML や OpenID Connect が使える場合、これとQuickSight を連携することが出来ます。
前の記事では、Azure AD と連携して AWS マネージメントコンソールに SSO ログインをできるようにしました。Azure AD に登録されている User を使ってログインすることで、AWS マネージメントコンソールにアクセスできます。しかし、会社全体に展開することを考えたときに、QuickSight は許可するが、AWS マネージメントコンソールは禁止したい場合もあります。
ということで、Azure AD と QucikSight を連携して、Azure AD 上のユーザーログインから直接 QuickSight へ遷移する方法をご紹介します。
わかったこと
検証を通じてわかったことを、まず冒頭に記しておきます。読み飛ばしてもらって大丈夫です。
- 手順について
- 次の URL で、Azure AD と QuickSight を連携するための手順が紹介されている。
- https://aws.amazon.com/jp/blogs/big-data/enabling-amazon-quicksight-federation-with-azure-ad/
- 私が実施した手順は、多少変更した手順で構成をしている。
- URL で紹介されているものは、Azure AD のグループを使っていが、私が使っている Azure AD の Free 版は、グループを作成することが出来ないため。(実際の本番環境は、グループを使っていくはずです)
- QuickSight に直接アクセスにする方法について
- Azure AD の設定で、Relay State を
https://quicksight.aws.amazon.com
に向けることで、QuickSight の直接ログインが可能
- Azure AD の設定で、Relay State を
- QuickSight 直接アクセスと、AWSマネージメントコンソールアクセスの使い分けについて
- Azure AD 上で作成する「エンタープライズアプリケーション」を2種類作成することで、ユーザー側で利用するアプリケーションを使い分けることが出来る。
- つまり、QuickSight しかアクセスさせたくないユーザーには、QuickSight直接アクセスする「エンタープライズアプリケーション」のみ割り当てることで、マネージメントコンソールに入れないようにする。
- この時の注意点としては、同一ユーザーが2種類作成する「エンタープライズアプリケーション」を同時に使う場合、同じ IAM Role を使いまわす必要がある。
- ことなる IAM Role で設定した場合、QuickSight としては異なるユーザーと認識されてしまう動作になる。そのため、同じ IAM Role を使いまわして登録することで、同一のユーザーとして認識してくれる。
- Azure AD のコンソールは、日本語だと若干挙動が怪しい部分があった。言語を英語に変えてやるのがいいのかも
Azure : Azure AD に QuickSight アプリケーションを登録
Microsoft Azure にログインをして、Azure AD に QuickSight アプリケーションを登録していきます。
https://portal.azure.com/
Azure AD 上で、エンタープライズアプリケーションを開きます。
新しいアプリケーションを追加を押します。
AWS の Icon を選択します。
AWS Single-Account Access を選択します。
名前を入れて登録をします。
シングルサインオンを選択します。
SAML を選択します。
基本的な SAML 構成を編集します。
パラメータを入力して保存をおします。リレー状態を変更することで、直接 QuickSight へのアクセスを行うように構成できます。
- リレー状態 (Relay State) :
https://quicksight.aws.amazon.com
フェデレーションメタデータXMLをダウンロードします。
AWS : IAM に Identity Provider を構成
Add Provider を選択
パラメータを入れて、Add provider を押す
- Provider type : SAML
- Provider Name : 好きな名前
- Metadata document : ダウンロードした XML ファイルを選択
AWS : IAM Policy の作成
IAM ユーザー側で QuickSight ユーザーの自己プロビジョニングをするときに、3種類のロールを選べます。IAM ユーザーについている IAM Policy によって、自己プロビジョニングをした時に付与されるロールが自動的に選択されます。
- Admin (管理者)
- Author (作成者)
- Reader (閲覧者)
今回の記事では、3つの IAM Policy を作成していきます。
- Admin 用ポリシー : QuickSightAdminforAzureAD
-
quicksight:CreateAdmin
を指定
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"quicksight:CreateAdmin"
],
"Effect": "Allow",
"Resource": "arn:aws:quicksight::xxxxxxxxxxxx:user/${aws:userid}"
}
]
}
- Author 用ポリシー : QuickSightAuthorforAzureAD
-
quicksight:CreateUser
を指定
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"quicksight:CreateUser"
],
"Effect": "Allow",
"Resource": "arn:aws:quicksight::xxxxxxxxxxxx:user/${aws:userid}"
}
]
}
- Reader 用ポリシー : QuickSightReaderforAzureAD
-
quicksight:CreateReader
を指定
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"quicksight:CreateReader"
],
"Effect": "Allow",
"Resource": "arn:aws:quicksight::xxxxxxxxxxxx:user/${aws:userid}"
}
]
}
AWS : IAM Role の作成
上記で作成した 3 つの Policy を使って、3 つの IAM Role を作成します。
Create Role を選択します。
SAML を選び、作成した Identity Provider を選択して Next を押す。
対象の Role を選び、Next を押す。
IAM Role の名前を指定して、Create をします。
同様の手順を繰り返して、3個の IAM Role を作成完了している状態です。
補足 : 1個の IAM Role を複数の Identity Provider で使いまわす
1 個の IAM Role を複数の Identity Provider で使いまわしたいときがあります。「AWSマネージメントコンソール」用のアクセスと、「QuickSight直接」の2種類の Identity Provider を用意したときに、同じ IAM Role を2つの Identity Provider に共有したいです。
そういった時には、1個の IAM Role の Trust Relationship の設定で、2つの Identity Provider を指定すると良いです。
JSON の設定はこんな感じで出来ました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::xxxxxxxxxxxx:saml-provider/AzureADforManagementConsole"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
},
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::xxxxxxxxxxxx:saml-provider/AzureADforQuickSight"
},
"Action": "sts:AssumeRoleWithSAML",
"Condition": {
"StringEquals": {
"SAML:aud": "https://signin.aws.amazon.com/saml"
}
}
}
]
}
Azure AD : 自動プロビジョニング
まず、次の URL の手順を参考にして、自動プロビジョニング用の IAM User と、それに紐づく Access Key, Secret Key を取得します。
Access Key, Secret Key を取得したら、次の手順を進めていきます。
プロビジョニングから、作業の開始を選びます。
パラメータを入れて、テスト接続を押します。
- 自動
- clientsecret : Access Key
- シークレット トークン : Secret Accesss Key
テスト接続が OK なので、このまま保存を押します。
保存完了です。
画面を戻した後に、プロビジョニングの開始を押します。
プロビジョニングが開始されました。
プロビジョニングの編集を押します。
プロビジョニングの状態がオンになっていれば OK です。オンになっていない場合は、オンにします。
100% 完了と表示されると、OK です。場合によっては時間がかかります。ロールが「5」なっており、AWS IAM Role を Azure AD と連携している様子がわかります。
念のため、プロビジョニングの再開をおしておくよいです。
Azure AD : RoleSessionName の指定を変更
RoleSessionName の指定を、Azure AD 上でカスタマイズします。
RoleSessionName を変更します。
user.mail
としておきます。
変わりました。
Azure AD : ユーザーの登録
ユーザーの追加をおします。
admin ユーザーを選択します。
この Admin ユーザーに割り当てる、AWS IAM Role を指定します。この右側の名前は、[IAMRole名,IdP名] という形式となっています。
1個の IAM Role を複数の IdP に設定している場合、IdP を間違えないように正しく選びましょう。
割り当てを押します。
この手順を繰り返して、3人分のロールを選択します。
Azure AD からログイン : 動作確認
これで Azure AD から直接 QuickSight にログインする準備ができました!それでは、Azure AD からログインを試してみましょう。次の Azure AD Portal にログインします。
Admin ユーザー
ユーザー名を入力します。
パスワードの入力
QuickSight のアイコンを選択します。
直接 QuickSight の画面が開けました!
Admin アカウントなので、全体の管理画面を開けます。
Author ユーザー
Author ユーザーでログインします。
QuickSight のアイコンを選択します。
直接 QuickSight の画面が開けました!Author アカウントなので、アカウント全体の管理画面は開けません。
Reader ユーザー
Reader ユーザーでログインします。
Reader 権限なので、Dashboard しか開くことが出来ません。
参考URL