概要

ローカルPCにAWSCLIがインストールされており、また、AWS Credentialsが取得できていればAWSのGUIでの操作をすべてローカルPCのコマンド上で行うことが可能です。このページではAWS Credentialsの取得する方法についてご説明します。

OneLoginからAWSにSMAL2.0を利用してシングルサインオンするための設定につきましては公式のこちらのページをご覧ください。

方法

3通りの方法があります。

Pythonがインストールされている場合は、Pythonでも簡単に操作を行うことができます。Dockerを用いる方法がバージョン違いによるエラー等が発生する確率が最も低いです。 使用しているマシンにDocker、Pythonどちらもインストールされていない場合は、Javaを使用する方法が簡単だと思います。 ご自身にあった方法で実行してください。

手順

概要

  • 事前準備(初回のみ必要)
  • パラメータの設定(パラメータの値を変更するたびに必要)
  • AWS Credentials取得プログラムを実行(AWS CLIを利用するたび必要)

Python

事前準備

こちらの操作は、初回のみ必要となります。

  1. こちらのページを参考にしてAWS CLIをインストールしてください。
  2. モジュールをインストール
    $ pip install awscli==1.18.208
    $ pip install onelogin-aws-assume-role==1.8.1
    ここでは正常に操作のできるバージョンを指定しています。お使いのマシンによって変更してください。

これで事前準備は完了です。

パラメータの設定

こちらの操作はパラメータの値を変更するたびに行う必要があります。カレントディレクトリにてonelogin.sdk.jsonを作成し、以下を記述します。こちらのファイルは作成必須です。

{
    "client_id": "abcdefg",
    "client_secret": "ABCDEFG",
    "region": "us",
    "ip": ""
}
  • client_id, client_secret : Authentication Only以上のスコープのOnelogin API Credentials
  • ip : OneLoginにログイン時にIPアドレス制限をかけている場合は入力が必要、IPアドレス制限をかけていない場合は空欄

OneLoginユーザー名やAWSリージョンが毎回同じである場合は、定義ファイルを用意することで入力を省略することが可能です。
onelogin.sdk.jsonと同じディレクトリにonelogin.aws.jsonを作成し、以下を入力します。
( onelogin.aws.jsonは作成必須ではありません。 )

{
    "app_id": "",
    "subdomain": "",
    "username": "",
    "duration": ,
    "aws_region": "",
    "aws_account_id": "",
    "aws_role_name": ""
}
  • app_id : OneLoginにおけるAWSコネクターのAPP ID
  • subdomain : OneLoginのサブドメイン
  • username : OneLoginのユーザー名
  • duration : AWS Credentialsの有効期限 ( デフォルトでは3600 )
  • aws_region : アクセスしたいリソースがあるAWSリージョン
  • aws_account_id : AWSアカウントID
  • aws_role_name : AWSのロール名

Docker

事前準備

こちらの操作は、初回のみ必要となります。

  1. こちらのページを参考にしてAWS CLIをインストールしてください。
  2. リポジトリをクローン
    $ git clone https://github.com/onelogin/onelogin-python-aws-assume-role.git
    $ cd onelogin-python-aws-assume-role

これで事前準備は完了です。

パラメータの設定

こちらの操作はパラメータの値を変更するたびに行う必要があります。カレントディレクトリにてonelogin.sdk.jsonを作成し、以下を記述します。こちらのファイルは作成必須です。

{
    "client_id": "abcdefg",
    "client_secret": "ABCDEFG",
    "region": "us",
    "ip": ""
}
  • client_id, client_secret : Authentication Only以上のスコープのOnelogin API Credentials
  • ip : OneLoginにログイン時にIPアドレス制限をかけている場合は入力が必要、IPアドレス制限をかけていない場合は空欄

OneLoginユーザー名やAWSリージョンが毎回同じである場合は、定義ファイルを用意することで入力を省略することが可能です。
onelogin.sdk.jsonと同じディレクトリにonelogin.aws.jsonを作成し、以下を入力します。
( onelogin.aws.jsonは作成必須ではありません。 )

{
    "app_id": "",
    "subdomain": "",
    "username": "",
    "duration": ,
    "aws_region": "",
    "aws_account_id": "",
    "aws_role_name": ""
}
  • app_id : OneLoginにおけるAWSコネクターのAPP ID
  • subdomain : OneLoginのサブドメイン
  • username : OneLoginのユーザー名
  • duration : AWS Credentialsの有効期限 ( デフォルトでは3600 )
  • aws_region : アクセスしたいリソースがあるAWSリージョン
  • aws_account_id : AWSアカウントID
  • aws_role_name : AWSのロール名

Java

事前準備

こちらの操作は、初回のみ必要となります。

  1. こちらのページを参考にしてAWS CLIをインストールしてください。
  2. バイナリファイルをダウンロード
    $ mkdir onelogin-aws-assume-role
    $ cd onelogin-aws-assume-role
    $ curl -OL https://github.com/onelogin/onelogin-aws-cli-assume-role/raw/master/onelogin-aws-assume-role-cli/dist/onelogin-aws-cli.jar

これで事前準備は完了です。

パラメータの設定

こちらの操作は、パラメータの値を変更するたびに実行する必要があります。先程作成したonelogin-aws-assume-roleへ移動し、カレントディレクトリにてonelogin.sdk.propertiesを作成し、以下を記述します。こちらのファイルは作成必須です。

onelogin.sdk.client_id=abcdef
onelogin.sdk.client_secret=ABCDEF
onelogin.sdk.region=
onelogin.sdk.ip=
  • onelogin.sdk.client_id, onelogin.sdk.client_secret : Authentication Only以上のスコープのOnelogin API Credentials
  • onelogin.sdk.client.region : Oneloginインスタンスのリージョンを示します。入力可能な値は'us'か'eu'
  • ip : OneLoginにログイン時にIPアドレス制限をかけている場合は入力が必要、IPアドレス制限をかけていない場合は空欄

実行

Python, Docker, Javaのそれぞれの実行するためのコマンドは以下のようになります。

  • Pythonでの実行コマンド(onelogin.sdk.json, onelogin.aws.jsonがあるディレクトリで実行します)
     $ onelogin-aws-assume-role  --profile default
  • Dockerでの実行コマンド(onelogin.sdk.json, onelogin.aws.jsonがあるディレクトリで実行します)
     $ docker build . -t awsaccess:latest 
    $ docker run -it -v ~/.aws:/root/.aws awsaccess:latest onelogin-aws-assume-role --profile default
  • Javaでの実行コマンド(onelogin-aws-cli.jar, onelogin.sdk.propertiesがあるディレクトリで実行します)
     $ java -jar onelogin-aws-cli.jar --profile default

以下に例としてDockerで実行した際のコードを記載します。

| OneLogin AWS Assume Role ToolOneLogin Password:
MFA Required
Authenticate using one of these devices:
 -----------------------------------------------------------------------
0 | OneLogin Protect
1 | OneLogin Protect
2 | Yubico YubiKey
-----------------------------------------------------------------------
Select the desired MFA Device [0-2]:
2
Enter the OTP Token for Yubico YubiKey:
ccccccundileunfgtyujhgfdfghjkhbvghjkjhgfghyuj
Obtained SAMLResponse from OneLogin to be used at AWS
Available AWS Roles
-----------------------------------------------------------------------
0 | Administrator (Account 1234567890) **
1 | ssm_sumologic-demo (Account 1234567890) *
2 | Administrator (Account 0987654321) *
-----------------------------------------------------------------------
option 0 selected, AWS Role: arn:aws:iam::1234567890:role/Administrator,arn:aws:iam::1234567890:saml-provider/onelogin-pentio
Success!
Temporary AWS Credentials Granted via OneLogin
Updated AWS profile 'default' located at /root/.aws/credentials
Executed a total of 1 iterations

上記操作によりエラーが発生しなければ正常にAWS Credentialsの取得が完了しています。

上記のコマンドの実行後に、aws s3 lsを実行します。

% aws s3 ls
2020-04-14 16:21:55 adcs-certificates-ca
2020-12-02 11:06:41 onelogin-meraki-api-scripts
2020-03-25 15:22:58 amazonlambda
2021-01-28 18:35:36 aws-sam-cli-managed-default-samclisourcebucket-fzibnfzxonxz
2020-03-25 15:23:24 awsverification
2020-08-26 17:04:18 pentio-acm-ca
2019-12-17 09:25:05 pentio-guardduty-save
2021-04-28 15:30:20 pentio-log
2020-04-13 11:59:08 pentio-serverless-application-repository

AWS Credentialsが取得できていることが確認できました。

無料トライアル

OneLoginでは30日間の無料トライアルを実施しています。企業ごとに独立したアカウントを発行していますので安心してご利用いただけます。検証課題が解消していない場合にはトライアルの期間を延長することも可能です。