Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS IAMの属人的な管理からの脱却【DeNA TechCon 2021】/techcon2...

DeNA_Tech
March 03, 2021

AWS IAMの属人的な管理からの脱却【DeNA TechCon 2021】/techcon2021-19

AWSをはじめとするクラウドプラットフォームの普及に伴い、DevとOpsの境目はかなり曖昧になっています。その中でもIAMの管理は設定によっては権限昇格を引き起こしかねないことから、その管理権限は慎重な管理になりがちです。結果的に、IAMは属人的な管理を行っている組織が多いのではないでしょうか。

一方で、DevとOpsの境目がどんどん曖昧になっていく中で、IAMロールやIAMユーザーを自由に作りにくい状況があると大変不便です。IAM関係のトライ・アンド・エラーが手軽に行えないことから、開発速度の鈍化を引き起こしたり、アーキテクチャ設計の上で運用上の足かせとなったりといったことが起こります。

また、それらの問題を回避しようとした結果として、IAMロールやIAMユーザーの使い回しが横行しはじめるなど、結果的に最小権限の原則が守られなくなっていくことも少なくはないのではないでしょうか。最小権限の原則が守られないと、脆弱性がシステムにもたらす影響を思わぬ所で広げかねないリスクがあるため、徹底していきたいと考える組織も多いかと思います。

しかし、やはり増え続けるIAMロールやIAMユーザーに対して属人的な管理体制はスケールしにくく、簡単にこれらを解決することはできません。主な原因は、IAMが属人的な管理をなされていることによってIAMロールやIAMユーザーを自由に作りにくい状況にあります。

では、どうしたら良いのでしょうか?IAMの管理を個人のものではなくチームのものとしていき、かつセキュアにそれを扱うためには何が必要でしょうか?

本セッションではAWS IAMの管理において、それをIAM管理担当者の属人的な管理を行っていたところから脱却し、Github上でIAMリソースを安全に管理するスタイルに行き着くまでに感じた課題とその解決手段について話します。

キーワード:
- IAM Policy
- Permissions Boundary
- Infrastructure as Code
- CI/CD

DeNA_Tech

March 03, 2021
Tweet

More Decks by DeNA_Tech

Other Decks in Technology

Transcript

  1. *B$

  2. Kick Job Github Enterprise Server Sync CI Create Developer Review

    Reviewer Pull-Request Merge AWS IAM ֓೦ਤ
  3. ཧ૝ͷ*B$ʹΑΔ*".؅ཧ w (JUIVCʹ1VMM3FRVFTU 13 Λ࡞ΓϚʔδ͞ΕͨΒ$*Ͱࣗಈಉظ w ίʔυ ઃఆ Λਖ਼ͱͯࠩ͠෼ಉظ͍ͨ͠ w

    શಉظͰ͸4%,ͳͲͷεϩοτϧֻ͕͔Γ͕࣌ؒͱͯ΋ֻ͔Δ w ఆظతʹ"84ଆΛਖ਼ͱͨࠩ͠෼ಉظΛऔΓࠐΈ͍ͨ w ۓٸ࣌ͳͲʹߦͬͨ௚ͷมߋ͕ҙਤͤͣר͖໭͞Εͳ͍Α͏ʹ w -JOUFSΛ༻ҙͯ͠ϙϦγʔͳͲͷෆඋΛࣗಈϨϏϡʔ͍ͨ͠ w ϊ΢ϋ΢Λ13͚ͩͰ͸ͳ͘ίʔυͱͯ͠΋஝ੵͰ͖Δ
  4. ಉظखஈͷબ୒ࢶ w 5FSSBGPSN w QSPTJNQPSU΋Մೳಠࣗ%4-Ͱࣗ༝౓͕ߴ͗͢ͳ͍ w DPOTTUBUFͷ؅ཧ͕ඞཁ w "84$%, $GO$MPVE'PSNBUJPO

     w QSPTTUBUFͷ؅ཧ͕ෆཁ w DPOTESJGUൃੜ࣌ʹखͰݕ஌ɾमਖ਼͕ඞཁࣗ༝౓͕ߴ͗͢Δ
  5. ఆٛྫ { "UserName": "foo", "Tags": {}, "PermissionBoundary": "arn:aws:iam::012345678901:policy/OurPermissionsBoundary", "InlinePolicies": {

    "Bar": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:ap-northeast-1:012345678901:foo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject",
  6. "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket"

    ], "Resource": "arn:aws:s3:ap-northeast-1:012345678901:foo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:ap-northeast-1:012345678901:foo-bucket/*" } ] } }, "AttachedPolicies": [] } ఆٛྫ