aws-oidc-login

command module
v0.0.0-...-da38339 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2024 License: MIT Imports: 10 Imported by: 0

README

aws-oidc-login

OpenIDプロバイダーにログインしてIDトークンを取得し、さらにSTSのAssumeRoleWithWebIdentityを実行して得られた一時的な認証情報を$HOME/.aws/credentialsにセットするまでを自動化する。

使い方

準備
  • OpenIDプロバイダーを用意し(Auth0やCognito, Keycloak等)、Callback URLとしてhttp://localhost:3000/callbackを許可しておく

  • 連携するAWSアカウントでIAM IDプロバイダーをセットアップする。またスイッチ先ロールの信頼関係ポリシーでIDプロバイダーからのsts:AssumeRoleWithWebIdentityを許可しておく

  • 実行ファイルと同じディレクトリにある.env ファイルを環境に合わせて編集する (直接環境変数としてセットしてもOK)

以下.envファイルの例

# The URL of your OIDC Domain. (Issuer claim without https://)
OIDC_DOMAIN='~.jp.auth0.com/'

# OIDC application's Client ID.
OIDC_CLIENT_ID='<Client ID>'

# OIDC application's Client Secret.
OIDC_CLIENT_SECRET='<Client Secret>'

# Scopes to request. (comma separated)
OIDC_CLAIMS='profile,email'

# Federated IAM Role ARN.
AWS_ROLE_ARN='arn:aws:iam::<Account ID>:role/<Role Name>'

# Credential profile.
AWS_PROFILE='oidc'
ログイン

コマンドを実行する

$ aws-oidc-login

ブラウザが開いてOIDCプロバイダーのログイン画面にリダイレクトされるので、ログインする。
ログインに成功したら画面遷移し"Authenticated"と表示される。

.credentialsファイルにoidcというプロファイル名で一時的な認証情報を書き込まれるので、それを使ってAWS CLIを実行可能となる。

$ aws --profile oidc sts get-caller-identity
{
    "UserId": "<Session ID>:<Session Name>",
    "Account": "<Account ID>",
    "Arn": "arn:aws:sts::<Account ID>:assumed-role/<Role Name>/<Session Name>"
}
Process Credential Providerを使った方法

$HOME/.aws/configに以下のように設定する

[oidc]
region = ap-northeast-1
output = json
credential_process = path/to/aws-oidc-login -p

通常どおりAWS CLIを実行すると、ブラウザが開くので同様にOIDCプロバイダーにログインする。
ログインに成功するとシームレスにCLI実行が可能となる。
取得した認証情報は$HOME/.aws/cache/<Profile name>に保存され、セッションの有効期限内であれば再利用される。

オプション
$ aws-oidc-login -h
usage: aws-oidc-login [flags] [env]
  -d, --envdir string   directory where env file exists
  -p, --provider        work as process credential provider

-d, --envdir (option) : .envファイルが存在するディレクトリを指定する (デフォルトは実行ファイルと同じディレクトリ)
-p, --provider (option) : このフラグをつけた場合、AWS CLIがcredential_processで受け取れる形式のJSONを出力する
[env] (option) : .envファイルの名前を指定する (デフォルトは.env) (例)auth0 -> auth0.envを参照しに行く.

参考

Auth0 Go SDK Quickstarts: Login
https://github.com/auth0-samples/auth0-golang-web-app/tree/master/01-Login

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
platform
web

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL