プロビジョニング機能を利用することで、一つのOneLoginコネクタから、複数のAWSアカウント、ロールに対してログインをさせることができます。
また、ユーザーの所属などの情報によって、ログイン先のAWSアカウントやロールへのアクセス権をコントロールすることができます。
この手順では以下のアカウントが必要です。
- OneLogin管理者アカウント
- AWSのIAMRole、IDプロバイダの作成、読み込み権限
OneLoginコネクタの作成
管理者アカウントでOneLoginにログインし、"Apps > Add Apps"を開き、検索欄に"AWS"と入力し、表示された"Amazon Web Services (AWS) Multi Account"を選択します。

OneLogin上の表示名を任意で設定して、"Save"を押します。

"Configuration"に移動し"External Role Name"に任意のIAM Role名を入力します。
そして、"トークンを生成"を押して、表示されたトークンを"コピー"ボタンでコピーして、右上の"SAVE"を押します。
※トークンは、AWS側の設定をする際に利用します。

"Provisioning"を開き"Enable provisioning"にチェックを入れます。

"Parameters"を選択し、"Role"を押します。次のポップアップ画面の設定を確認して"Save"を押します。

表示されたポップアップ画面で、以下のように"Amazon Roles Format"が設定されていることを確認します。

"MORE ACTIONS > SAML Metadata"を押すと、"xml"形式のファイルがダウンロードされます。
※AWS側の設定で利用します。

AWS側の設定
IDプロバイダー設定
AWSマネジメントコンソールにログインし"IDプロバイダー > プロバイダの作成"を押します。

プロバイダのタイプは"SAML"を選択し、プロバイダ名には、任意の名前を指定します。
そして"ファイルを選択"を押して、先程OneLoginのコネクタ設定時にダウンロードした、XMLファイルを選択して"次のステップ"を押します。

"作成"を押します。

ユーザーがアクセスするためのIAM Role設定
"ロール > ロールの作成"を選択します。

"SAML 2.0 フェデレーション"を選択し、SAMLプロバイダーに先程作成した、IDプロバイダーを選択します。
そして、"プログラムによるアクセスとAWS マネジメントコンソールによるアクセスを許可する"を選択して、"次のステップ:アクセス権限"を押します。

任意のポリシーを設定して"次のステップ:タグ"を押します。

タグを任意で設定し"次のステップ:確認"を押します。

最後に任意のロール名を入力し"ロールの作成"を押します。

クロスアカウントアクセス用IAM Role設定
クロスアカウントアクセスを実現するためのIAMRoleを作成する前に、必要なポリシーを作成します。
"ポリシー > ポリシーの作成"を押します。

"JSON"を選択し、ポリシーを記載して"ポリシーの確認"を押します。

JSONのポリシーは以下のように設定します。
※最低限必要なポリシーは以下となっております。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"iam:ListAccountAliases",
"iam:ListRoles"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
ポリシー名を任意で指定して"ポリシーの作成"を押します。
※例として"external-role-policy"としてポリシーを作成しています。

"ロール > ロールの作成"を押します。

"別のAWSアカウント"を選択し、以下のURL内に記載されているAWSアカウントIDを入力し、"外部 ID が必要 (サードパーティーがこのロールを引き受ける場合のベストプラクティス)"をチェックを入れて、OneLoginコネクタ設定時に発行した"外部ID"を入力して、"次のステップ:アクセス権限"を押します。https://onelogin.service-now.com/support?id=kb_article&sys_id=66a91d03db109700d5505eea4b9619a5

先程作成したポリシーを選択し"次のステップ:タグ"を押します。

任意でタグを設定し"次のステップ:確認"を押します。

ロール名をOneLoginコネクタ設定時に"External Role Name"に指定したものと同様に設定します。

ここまでの、AWSアカウントの設定を、連携したいAWSアカウントで実施します。
OneLogin側のプロビジョニング設定
最後に、OneLoginコネクタのプロビジョニング設定を行います。
該当コネクタの"Configuration"を開き、
arn:aws:iam::アカウントナンバー:saml-provider/IDプロバイダ名
の規則に従い各AWSアカウントの情報を入力し、"Save"を押します。

次に"Provisioning"を開き"Refresh"を押します。
※画面上での変化は特に起きません。

"Access"を開き、今回作成したコネクタが利用できる権限ロールを設定します。

"Rules"から、プロビジョニングのルールを設定します。

Nameにルール名を設定し、Conditionsにプロビジョニングの条件を指定し、最後に、条件にマッチした場合に、利用させるAWSアカウントを指定します。
※画像の例では、OneLogin上のロールで"aws"が割り当てられているユーザーの場合、"onelogin-ro"のアカウントにアクセスさせる設定になっています。

ログイン確認
最後にログイン確認を行います。
OneLoginにログインし、先程作成した、コネクタをクリックします。

クリック後、利用できるAWSアカウント(IAMロール)が表示されるので、利用したいアカウントを選択して"サインイン"を押します。

無事ログインが完了できます。
画像では"Multi-Admin"というIAMロールをOneLoginのユーザー名でログインしています。
