Macからログイン画面経ずにスムーズにAWS Management Console行くで!
ビビリな私は、当然MFAを有効にしてパスワードも定期的に変更しているので
ログインが面倒くさくて最近ほとんどログインしていなかった。
やりたいことはあるのにログインが面倒だから入らないってなんやねん。
ってことでコマンド叩いたらログイン済みの画面開くようにするで。
ターゲット
- AWS使う人
- ログイン画面でログインするのが面倒くさい人
- Macユーザ(じゃなくても良いけど、openコマンド使ってるので窓の場合はそこの書き換えが必要)
- Node.jsの環境ある人
- cliをちょっとは触ったことがある。
技術要素とライブラリ
技術要素
- AWS IAM
- AWS STS
- Node.js
Node.jsのライブラリ
- aws-sdk
- co
- request
やったこと
- IAMでユーザとロールを作成(ユーザは既存のユーザで良い)
- Node.jsのスクリプトをゴリゴリ書く
- 走らせる
Role
Roleの作成としては
- AssumeRole52というロールを
- AdministratorAccessのポリシを当てて
- ユーザにそのロールを使う権限を与える
AdminiStratorAccessに関しては下図の通り
信頼関係タブから「信頼関係の編集」を選んで下の感じでユーザを書き足したらOK
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com",
"AWS": "arn:aws:iam::数字:user/ユーザのID"
},
"Action": "sts:AssumeRole"
}
]
}
追加したら画面にユーザの情報が追加される
ただ、AdministratorAccessなんぞ許可することはオススメせず、触りたいサービスの許可したいActionだけに絞ってRoleを与えるくらいの認可制御しなきゃなんやで。
コード
Githubに上げているのでそちらを参照。
流れとしては
- 付与したいPolicy等の設定を読み込んで
- STSに対して自分のユーザでログインセッションを要求
- 取得したセッションのTokenを使ってログイン画面へアクセスさせる。
まとめ
ログインを簡単にする上に、権限絞ったアクセスしかできないトークンを発行するから安心!
人に一時的にログインさせるとかが起こってもPolicy切ってから渡せばOKなので素敵!
調子乗ってAppleScript書いて呼び出したけど、自分の環境以外で使えるようにするの面倒だったので今後ビックリするくらい気が向いたら公開。