Help us understand the problem. What is going on with this article?

OneLoginとSwitchロールでAWSにログインできるようにした

本記事は「Opt Technologies Advent Calendar 2019」4日目の記事である。

1. 概要および制限事項

本記事ではAWSに対してOneLoginで認証する手順については記載しない。

OneLoginを利用してあるAWSアカウントにログインしたユーザがSwitch Roleで別のAWSアカウントに切り替えられる設定
およびOneLoginの認証情報をもとにSwitchRole可能なアカウントを制限する設定について記載する。
またAWSコンソールの利用のみ対象とし、IAMロールに紐づく一時アクセスキーの取得は対象外とする。

今回の手順では一部にAWS CLIを使用する。

$ aws --version
aws-cli/1.16.195 Python/2.7.16 Darwin/19.0.0 botocore/1.12.185

2. 手順内容

手順はおおよそ以下となる。

  1. マスターアカウントにSAMLとIAMロールを設定
  2. OneLoginにAWS用のコネクタを作成
  3. メンバーアカウントにSwitchRoleのためのIAMロールを作成
  4. ユーザにURLを共有

2-1. 構成

SwitchRole.png

上図のようにユーザはOneLoginでマスターアカウントにログインする。
各プロダクトが稼働するメンバーアカウントはSwitchRoleして利用することを考えた。

2-2. OneLoginでマスターアカウントにログインする

参考資料をもとに設定をおこなう。

参考資料に加えて必要な手順として、今回の構成においてユーザにはメンバーアカウントへのSwitchRoleをさせるため
マスターアカウントに作成するIAMロールにはその権限を付与する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "*"
        }
    ]
}

2-3. メンバーアカウントにSwitch Role用のIAMロールを作成

メンバーアカウントにてIAMロール作成する。以下はCloudFormationで作成するさいのサンプル。

sample.yaml
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  MasterAccountId:
    Type: String
Resources:
  IAMRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: 'PowerUserRole'
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Action: 'sts:AssumeRole'
            Effect: 'Allow'
            Principal:
              AWS: !Sub 'arn:aws:iam::${MasterAccountId}:root'
            Sid: ''
      ManagedPolicyArns:
      - 'arn:aws:iam::aws:policy/PowerUserAccess'

AssumeRolePolicyDocumentにarn:aws:iam::(マスターアカウントのID):rootを設定することで、マスターアカウントからのSwitchRoleだけ許可する。

AWS CLIでは以下のようにデプロイする。
注意:メンバーアカウントに対してデプロイするよう注意すること

masterAccountId=hoge
productAccountProfile=huga

aws cloudformation deploy \
--template-file sample.yaml \
--stack-name switchrole-from-onelogin \
--parameter-overrides MasterAccountId=${masterAccountId} \
--capabilities CAPABILITY_NAMED_IAM \
--profile ${productAccountProfile}

2-4. 限られたユーザのSwitchRole

上記のIAMロールの設定ではマスターアカウントにログインしたユーザは全員SwitchRole可能となっている。
Administratorなど限られたユーザにのみSwitchRoleを許可したい場合、以下のように設定する。

sample.yaml
AWSTemplateFormatVersion: 2010-09-09
Parameters:
  MasterAccountId:
    Type: String
  MasterAccountRoleName:
    Type: String
Resources:
  IAMRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: 'PowerUserRole'
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Action: 'sts:AssumeRole'
            Effect: Allow
            Principal:
              AWS:
                - !Sub 'arn:aws:sts::${MasterAccountId}:assumed-role/${MasterAccountRoleName}/erai@example.com'
                - !Sub 'arn:aws:sts::${MasterAccountId}:assumed-role/${MasterAccountRoleName}/kanrisha@example.com'
            Sid: ''
      ManagedPolicyArns:
      - 'arn:aws:iam::aws:policy/PowerUserAccess'

OneLogin経由でマスターアカウントにログインした状態では<IAMロール名>/<メールアドレス>で認証されているため
AssumeRolePolicyDocumentにarn:aws:sts::(マスターアカウントID):assumed-role/(IAMロール)/(メールアドレス)となる。

デプロイは手順2-3と共通。

2-5. SwitchRole用のURLを共有

作成したIAMロールをAWSコンソールから確認すると、赤枠のコンソールでロールを切り替えることができるユーザーに、このリンクを知らせますが表示される。
scsho.png

このURLをユーザに共有する。

ユーザがOneLogin経由でマスターアカウントにログインしている状態で上記リンクを踏むと以下の画面に遷移する。

switchroleconfig.png

上記項目を設定するとSwitchRole設定が完了する。

3. 参考

OneLoginを利用してAWSにSAMLでログインする: Serverworks ENGINEER BLOG
http://blog.serverworks.co.jp/tech/2018/06/22/onelogin-aws-saml/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away