はじめに
AWSで個人開発するために開発環境を整える
最初は管理IAMユーザーの長期パスで認証を実現しようと思ったが、
- なんとなく不安
- WSLなど挟んだ時にどういう動作なるかわからない
などの理由でSSOユーザーを勉強を兼ねてつくってみる
IAM周りの確認
Uer
- rootユーザー: 作成済み。MFA設定済み
- IAMユーザー:
- AministratouAccessのポリシーがアタッチされているものが作成済
- MFAは有効になってない
Role
3つあった。無害そうなので放っておく
IAM Identity Center
ルートユーザーではなく、管理者権限のIAMユーザーで作業している
SSOのインスタンス作成
SSOのセッションを管理するみたいなものと認識している
- IAM Identity Center を開く
- 右上にある Enable クリック -> さらに Enable をクリック
- Regionを明らかにミスってるので作り直す
- 管理画面からデリート
- regionを東京にしてから再実行
SSO Userをつくる
- (Left Menu) Users -> add user
- フォームを入力
- Specify user details: 必須項目(名前とメアド)
- それ以外は何も設定せず作成
Permission setsをつくる
session の持続時間が1時間だと不便らしいので8時間にした
AWSアカウントと紐づける
- (Left Menu) AWS accounts
- rootのユーザ(=AWSアカウント)が出てきたので、選択して右上のAssign何とかを click
- 前段で作成した SSOユーザーと Permission set を紐づける
- 完了
動作確認(GUI)
- settings summary の中のある AWS Access Portal を click
- 遷移した先でユーザー名を入力
- 作成したこと記憶のないパスワードを要求される
- メール見たら
Invitation to join AWS IAM Identity Centerが来てた- おそらくユーザー作った時点で来てた
- パスワードを設定
- 再度ログインを試行
- MFAを要求されたのでApp選択
-
google AuthentecatorでQRコードを読み込み - 表示されたコードを読み取って入力
- ログインできた
- ログイン後は何もない虚無の画面に遷移したが、アカウントのトグルボタンをクリックしたらでてくる
AdministratorAccessをクリックしたらいつもの画面に飛んだ
動作確認(CLI)
以下を実行
import boto3
def main():
s3 = boto3.client('s3')
response = s3.list_buckets()
print(response)
if __name__ == "__main__":
main()
↓
aws cli でログインしてみる
“SSO セッション” と “プロファイルの作成(よくわかってない)
- aws configure sso を実行
- 必要な情報を入力
- ブラウザに遷移 → 認証
- default region: ap-northeast1
- CLI default output format: None
- Profile name: my-sso
aws sts get-caller-identity --profile my-sso
を実行→結果がくる
コードを再実行→状況が変わらず
以下のようにコードを修正
Before
---
s3 = boto3.client('s3')
After
---
session = boto3.Session(profile_name="my-sso")
s3 = session.client('s3')
結果がきた
最後に
ひとまず、SSOユーザーを使用して
- 管理コンソールにログイン
- SDKにトークンを渡して認証
が実現できた
-
SSOセッションやprofileってなに - dockerやterraformではどうやって認証情報渡すの?
- IAMユーザは全部消しちゃってOK?
などの疑問はあるが、ゆくゆく解決したい



