Slide 1

Slide 1 text

永続的認証情報からの脱却 株式会社⾖蔵 庄司 重樹 2023年8⽉18⽇

Slide 2

Slide 2 text

コンサルタント 庄司 重樹 株式会社⾖蔵 AWS Community Builder, 2023 Japan AWS Top Engineer, 11x AWS Certified 好きなサービスは、IAM @takesection

Slide 3

Slide 3 text

IAMって何がすごい? 引⽤: InfoQ AWS re:Invent 2021の総括 から 最も驚異的な AWS サービスは何でしょうか? それは EC2 ではない でしょう。S3 でもありません。それは IAM です。毎秒 5 億回の API 呼び出しがあります... 想像してみてください。

Slide 4

Slide 4 text

永続的認証情報って何? IAMユーザーに設定したアクセスキーIDやシークレットアクセス キー

Slide 5

Slide 5 text

⼀時的認証情報って何? EC2やコンテナ (ECS、EKS、Fargate)、Lambda等でAWSリ ソースにアクセスする場合、IAMロールを割り当てる。 IAMロールはAssumeRole (ロールの引き受け) で⼀時的な認証情 報が利⽤可能になる。

Slide 6

Slide 6 text

どうして流出するの? • GitHubの公開リポジトリで全世界に公開😇 • GitHubのプライベートリポジトリだからといっても安⼼できな い • 暗号化されて保存されるシークレットストアも⼼配 • 2023年1⽉4⽇のCircleCIが有名

Slide 7

Slide 7 text

AWS IAM Identity Centerを使おう • IAM Identity Centerを使って、OktaやMS Entra ID、MS AD等 の認証基盤と連携しよう [profile foo] role_arn = arn:aws:iam::123456789012:role/RoleForFoo source_profile = example [profile example] sso_session = example sso_account_id = 123456789012 sso_role_name = ExamplePolicy region = ap-northeast-1 output = json [sso-session example] sso_start_url = https://d-XXXXXXXXXX.awsapps.com/start sso_region = ap-northeast-1 sso_registration_scopes = sso:account:access 「IAM でのセキュリティのベストプラクティス」

Slide 8

Slide 8 text

CLIの使い⽅ ʻaws sso login ‒profile exampleʼ を実⾏すると、認証され profile で指定されたロールの⼀時的認証情報が取得される (背後 で、STSを介して⼀時的認証情報 - アクセスキーID、シークレッ トアクセスキーとセッショントークン ‒ を取得している)。 「AWS IAM Identity Centerのロールから別のロールにCLIでスイッチして操作する」

Slide 9

Slide 9 text

CI/CDではOIDCトークンを使おう GitHub ActionsやGitLab CI/CD、CircleCI等を使う場合は、それ ぞれから発⾏されるOIDCトークンを使う。 • GitHub ActionsやGitLab CI/CD、CircleCI等の外部IDプロバイ ダをIAM IDプロバイダに追加 • STSのAssumeRoleWithWebIdentityアクションで、指定した ロールの⼀時的認証情報を取得 「GitHub Actions ワークフローでリテラルの AWS アカウント ID を使⽤しないためのヒント」

Slide 10

Slide 10 text

Google Apps Scriptでは Google Apps ScriptのWebアプリでは、 ScriptApp.getIdentityToken()でOIDCトークンを取得することが できる。CI/CDの場合と同様にAssumeRoleWithWebIdentityア クションで、⼀時的認証情報を取得してAWSリソースへのアク セスが可能 「Google Apps ScriptからAWSにアクセスするための署名の実装」

Slide 11

Slide 11 text

オンプレミスサーバはどうすれば… SSM AgentをインストールしてAWS Systems Managerのマネー ジドノードに追加できる場合は、IAMロールが使える 「オンプレミスのサーバでIAMロールを使⽤する」 「5分でわかった気になるSystemsManager」

Slide 12

Slide 12 text

ご清聴ありがとうございました🙇