G Suiteの認証を介してAWSの一時認証クレデンシャルを取得する

  • 2
    いいね
  • 0
    コメント

説明

AWSコンソールへのログインがG SuiteのSAML2.0フェデレーションを介して行えるようになり、コンソールへのログインは
ユーザ管理の手間が減りました。が、個々のユーザがAWS CLIなどでAPIを呼出す時に認証にはまだ固定のキーが必要な状況でした。
これをやめてキー管理からも開放されたいと思います。
ここでは、AWSブログにあったsamlapi_formauthの内容を参考にG Suiteのログインをスクリプトで実行して、SAMLレスポンスを
受け取る用にしました。

準備

  • python2.7系が動く環境
  • jsを動かすためのブラウザとしてPhantomJSをインストール

    $ brew install phantomjs
    
  • その他以下のライブラリをインストール

    • selenium
    • requests
    • lxml
    • beautifulsoup4
    $ pip install selenium
    $ pip install requests
    $ pip install lxml
    $ pip install beautifulsoup4
    

    ※pipに関しては各自使えるようにしておいてください。

  • githubからクローンする

    $ git clone .......
    
  • credentialsの確認
    現状、~/.aws/credentialsの状態が以下の状態であることを前提とします

    [deafult]
    access_key_id =       # ここは何も設定されていなくてもOK
    secret_access_key =     # ここは何も設定されていなくてもOK
    
    [some_profile]
    access_key_id = xxxxxx
    secret_access_key = xxxxx
    

使い方

$ python gsuite_samlapi_formauth.py
:
username: xxxxxxxx
password: 
:
:

[0] xxxxxxx/xxxxxxxx

select hogehoge
0

:

スクリプトを実行するとユーザ名/パスワードの入力を求められます。こちらは、ログイン情報を入力してください。
その後、ロールの選択を行います。番号を入力してください。
一時認証の取得に成功した場合は、該当のアカウントのS3のバケット一覧が表示されます。

取得した結果は、~/.aws/credentialsのセクション[saml]へ書き出されます。
以降、1時間以内は下記のようにコマンドを実行可能となります。

$ aws --profile saml s3 ls

残念ながら現在のAWSの仕様上一時認証情報の有効期間は、1時間となっています。:cry:
あと、スクリプトの実行は遅いです…。なんとかなんないかな?