Slide 1

Slide 1 text

aws-vault を使った セキュアなアクセスキー管理 AWS Startup Tech Meetup 関西 #1 2022/09/29 株式会社インゲージ 永田 兆

Slide 2

Slide 2 text

自己紹介 ● 永田 兆(ながた きざし) ● @kizashi1122 ● 2014年よりインゲージ社(創業メンバー) ○ 創業時よりCTO ○ Re:lation(次のページ)の開発 ○ バックエンドやインフラを担当 2

Slide 3

Slide 3 text

サービス紹介

Slide 4

Slide 4 text

aws のアクセスキーの管理 どうしていますか? 4

Slide 5

Slide 5 text

サービス開発とアクセスキー ● 本番環境では IAM Role(ECS TaskRoleなど)を使っているためアクセスキー を意識することはありません ● 開発環境(個人の PC 端末)では、AWS リソースにアクセスする事情がある 場合にはアクセスキーを付与する必要があります ○ 付与したアクセスキーは $HOME/.aws/credentials に配置する、など 5

Slide 6

Slide 6 text

今まで ● 社員メンバーについては IAM Identity Center(旧AWS SSO)で管理するよう になった ● (にもかかわらず)開発環境用に最低限のポリシーをアタッチした IAM User Group を作成して、 ● その IAM User Group 内にエンジニア(社員・パートナーともに)ごとに、 IAM User を作成していた(アクセスキーを払い出していた) 6 IAM Policy IAM User Group IAM User IAM User IAM User

Slide 7

Slide 7 text

7 しかし、永続アクセスキーは情報漏えいの観点からも、 付与すべきではありません! せめてもの対策で https://github.com/rhyeal/aws-rotate-iam-keys をつかって、 キーのローテーションの自動化はしていました

Slide 8

Slide 8 text

方針 ● aws-vault を使う ○ アクセスキーや秘匿情報を .aws/credentials ではなく、OS のキーストアに管理できる Go 製 のコマンドラインツール ○ brew install --cask aws-vault でインストール可能 ○ sts/mfa/sso に対応 ● 社員(IAM Identity Center 管理) ○ IAM Identity Center と aws-vault を連携させる ○ MFA は IdP 側でおこなっているので AWS 側では設定不要とする ● パートナー(IAM Identity Center 管理外) ○ IAM User は作成する(し、アクセスキーも発行する) ○ MFA 認証後でないと開発者向け IAM Role を引き受けられないというポリシーを設定 ○ このアクセスキーが漏れても実害がない 8

Slide 9

Slide 9 text

コマンド実行例 ● -- の後ろのコマンドに AWS_ACCESS_KEY_ID などの環境変数が引き渡され る ○ aws コマンドだけでなく、docker-compose や terraform でも使えます ● ただし、コマンド実行時に、ブラウザで許可したり(SSO)、MFA パスコー ドを入力したり(STS)は必要 9 $ aws-vault exec relation -- docker-compose up -d

Slide 10

Slide 10 text

結果 ● 社員に発行していた分の IAM Userは撲滅できた! ● $HOME/.aws/credentials も不要になった! ● 手間は増えたがセキュアになった! 10

Slide 11

Slide 11 text

11 インゲージではエンジニアを募集しています!