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

20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABA...

Avatar for yhana yhana
September 03, 2025

 20250903_1つのAWSアカウントに複数システムがある環境におけるアクセス制御をABACで実現.pdf

Avatar for yhana

yhana

September 03, 2025
Tweet

More Decks by yhana

Other Decks in Technology

Transcript

  1. *".ϙϦγʔͷྫ  { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow",

    "Action": ["ec2:List*", "ec2:Describe*", "ec2:Get*"], "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } 1SPKFDUλάͷ஋ͷҰகΑΓ &$Πϯελϯεͷىಈɾ ఀࢭΛڐՄ͢ΔϙϦγʔྫ
  2. *".Ϣʔβʔͱ *".ϩʔϧΛ૊Έ߹ͤͨํ๏  *".ϩʔϧͷڐՄϙϦγʔ͸ ɺ*".ϢʔβʔͷλάΛར༻͢Δ৔߹ͱಉ༷ʹ ڞ௨ͷ *".ϙϦγʔͰ࣮ݱ { "Version": "2012-10-17",

    "Statement": [ { "Effect": "Allow", "Action": ["ec2:List*", "ec2:Describe*", "ec2:Get*"], "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } ڐՄϙϦγʔ ৴པϙϦγʔ ڐՄϙϦγʔ ৴པϙϦγʔ
  3. *".Ϣʔβʔͱ *".ϩʔϧΛ૊Έ߹ͤͨํ๏  *".ϩʔϧͷ৴པϙϦγʔʹ͓͍ͯɺεΠονϩʔϧͰ͖ΔϢʔβʔΛ੍ݶ { "Version": "2012-10-17", "Statement": [ {

    "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/test-user", "arn:aws:iam::111122223333:user/test-user2" ] }, "Action": "sts:AssumeRole",} ] } ڐՄϙϦγʔ ৴པϙϦγʔ
  4. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ec2:List*",

    "ec2:Describe*", "ec2:Get*"], "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } "84*".*EFOUJUZ$FOUFS͸ϢʔβʔଐੑΛར༻  ΞΫηεڐՄηοτʹؔ࿈෇͚ΔϙϦγʔͰ 1SPKFDUΩʔΛࢦఆ
  5.  { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action":

    "sts:AssumeRole", "Resource": "*" } ] } ΞΫηεڐՄηοτʹ͸εΠονϩʔϧͰ͖ΔݖݶΛΞλον ΞΫηεڐՄηοτʹ Ξλον͢ΔϙϦγʔ *".*EFOUJUZ$FOUFSͱ *".ϩʔϧΛ૊Έ߹ͤͨํ๏
  6. *".ϩʔϧͷ৴པϙϦγʔͰ͸ɺ1SJODJQBMʹΞΫηεڐՄηοτʹରԠ͢Δ *".ϩʔϧΛࢦఆ͠ɺ$POEJUJPOͰεΠονϩʔϧͰ͖ΔϢʔβʔΛ੍ޚ  { "Version": "2012-10-17", "Statement": [ { "Effect":

    "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/aws- reserved/sso.amazonaws.com/ap-northeast- 1/AWSReservedSSO_AssumeRoleOnlyAccess_22e9e155f6d2118f" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "identitystore:UserId": [ ”aaaaaaaa-1111-aaaa-1111-aaaaaaaaaaaa", ”bbbbbbbb-2222-bbbb-2222-bbbbbbbbbbbb" ] } } } ڐՄϙϦγʔ ৴པϙϦγʔ *".*EFOUJUZ$FOUFSͱ *".ϩʔϧΛ૊Έ߹ͤͨํ๏
  7. ෳ਺ͷλάͷҰகʹΑΓ੍ޚ  ෳ਺ͷλάΛ৚݅ͱ͢Δ͜ͱ΋ՄೳʢԼਤ͸ ͭͷλάΛ৚݅ͱ͍ͯ͠Δྫʣ { "Version": "2012-10-17", "Statement": [ {

    "Effect": "Allow", "Action": ["ec2:List*", "ec2:Describe*", "ec2:Get*"], "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}", "aws:ResourceTag/Environment": "${aws:PrincipalTag/Environment}" } } } ] } ڐՄϙϦγʔ ৴པϙϦγʔ
  8. "DUJPOΛϫΠϧυΧʔυͰࢦఆ΋Մೳ  "DUJPOΛʮFD ʯͱهࡌͯ͠ର৅αʔϏεͷ͢΂ͯͷΞΫγϣϯΛؚΊΔ ϫΠϧυΧʔυࢦఆ΋Մೳ { "Version": "2012-10-17", "Statement": [

    { "Effect": "Allow", "Action": ["ec2:List*", "ec2:Describe*", "ec2:Get*"], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:*", "Resource": "*", "Condition": { "StringEquals": { ”aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } ڐՄϙϦγʔ ৴པϙϦγʔ ڐՄϙϦγʔ ৴པϙϦγʔ
  9. 4ΦϒδΣΫτͷ "#"$  4͸ΦϒδΣΫτ୯ҐͰλά෇͚͕Ͱ͖ɺΦϒδΣΫτͷλάΛར༻ͯ͠ ΞΫηε੍ޚ͕Ͱ͖Δ ڐՄϙϦγʔ ৴པϙϦγʔ { "Version": "2012-10-17",

    "Statement": [ { "Effect": "Allow", "Action": ["s3:List*", "s3:GetBucketLocation"], "Resource": "*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/Project": "${aws:PrincipalTag/Project}" } } } ] }
  10. 4όέοτ໊Λར༻੍ͨ͠ޚ  *".ͷڐՄϙϦγʔʹ͓͍ͯɺ3FTPVSDF಺Ͱλάͷ஋Λಈతʹࢀর όέοτ໊ʹλάͷ஋ؚ͕·ΕΔҐஔ͸Ϧιʔε໋໊نଇʹґଘ ڐՄϙϦγʔ ৴པϙϦγʔ { "Version": "2012-10-17", "Statement":

    [ { "Effect": "Allow", "Action": ["s3:List*", "s3:GetBucketLocation"], "Resource": "*" }, { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::*-${aws:PrincipalTag/Project}-*", "arn:aws:s3:::*-${aws:PrincipalTag/Project}-*/*" ] } ] }
  11. λά͕͋ΔϦιʔεͷΈ "#"$Ͱ੍ޚ͢Δํ๏  ಡΈऔΓݖݶ λά͕ଘࡏ͔ͭλά஋͕Ұக͠ͳ͍৔߹ʹ໌ࣔతͳ %FOZͱ͢Δ ͜ͱͰ࣮ݱՄೳ { "Version": "2012-10-17",

    "Statement": [ { "Effect": "Deny", "Action": ["logs:Get*", "logs:FilterLogEvents", "logs:StartQuery", "logs:StopQuery", "logs:StartLiveTail", "logs:StopLiveTail", "logs:TestMetricFilter"], "Resource": "arn:aws:logs:*:*:log-group:*", "Condition": { "Null": { "aws:ResourceTag/Project": "false" }, "StringNotEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } ڐՄϙϦγʔ ৴པϙϦγʔ ʮ$MPVE8BUDI-PHT3FBE0OMZ"DDFTTʯ౳ͷಡΈऔΓݖݶ
  12. { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["logs:Get*",

    "logs:FilterLogEvents", "logs:StartQuery", "logs:StopQuery", "logs:StartLiveTail", "logs:StopLiveTail", "logs:TestMetricFilter"], "Resource": "arn:aws:logs:*:*:log-group:*", "Condition": { "Null": { "aws:ResourceTag/Project": "false" }, "StringNotEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } λά͕͋ΔϦιʔεͷΈ "#"$Ͱ੍ޚ͢Δํ๏  $POEJUJPO͸Լهͷ "OE৚͕݅ຬͨ͞Εͨ৔߹ʹ໌ࣔతʹ %FOZ l ର৅Ϧιʔεʹ 1SPKFDUλά͕ଘࡏ͢Δʢ/VMM͸ USVFͰଘࡏ͠ͳ͍ʣ l 1SJODJQBM *".ϩʔϧ౳ ͱର৅Ϧιʔεͷ 1SPKFDUλάͷ஋͕Ұக͠ͳ͍
  13. ಡΈऔΓݖݶͷ෇༩ύλʔϯ "#"$Ͱ੍ޚ͢ΔαʔϏεʹؔ͢ΔಡΈऔΓݖݶΛҰॹʹ༩͑Δඞཁ͕͋Δ ಡΈऔΓݖݶ͸ɺ࠷খݖݶͱ͢Δํ๏΍ "84؅ཧϙϦγʔΛར༻͢Δํ๏ͳͲ ͕͋Δ /P ํ๏ ݖݶͷ޿͞ ؅ཧͷखؒ උߟ

     ඞཁ࠷খݶͷΞΫγϣϯͷΈࢦఆ ࠷খ େ   -JTU %FTDSJCF (FU୯ҐͰࢦఆ ݶఆత த /Pͱಉ༷ͱͳΔ͜ͱ΋͋Δ  ֤αʔϏεʹରԠͨ͠ "84؅ཧϙϦγʔ ͷಡΈऔΓݖݶ ݶఆత খ "NB[PO&$3FBE0OMZ"DDFTT౳  "84؅ཧϙϦγʔʮ3FBE0OMZ"DDFTTʯ ޿Ҭ খ 4ΦϒδΣΫτΛμ΢ϯϩʔυͰ ͖Δݖݶ΋ؚ·ΕΔ 
  14. ඞཁ࠷খݶͷΞΫγϣϯͷΈࢦఆ ࠷খݖݶΛ࣮ݱͰ͖Δ͕ɺௐࠪʹख͕͔͔ؒΔ఺΍ɺϚωδϝϯτίϯιʔϧ্ Ͱݖݶ͕ແ͍Ӿཡʹର͢ΔΤϥʔϝοηʔδʹΑΓࢹೝੑ͕མͪΔ఺͕ݒ೦ { "Version": "2012-10-17", "Statement": [ { "Effect":

    "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } 
  15. -JTU %FTDSJCF (FU୯ҐͰࢦఆ -JTU %FTDSJCF (FUؔ࿈ΞΫγϣϯΛϫΠϧυΧʔυͰ·ͱΊͯڐՄ (FUܥΞΫγϣϯʹ͸σʔλμ΢ϯϩʔυؚ͕·ΕΔ͜ͱ΋͋Δ఺ʹ͸ཁ஫ҙ  { "Version":

    "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ec2:List*", "ec2:Describe*", "ec2:Get*"], "Resource": "*" }, { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } ࠷খݖݶͱൺֱͯ͠ɺӾཡ࣌ʹΤϥʔϝοηʔδ͕ දࣔ͞ΕΔ͜ͱ͸গͳ͍
  16. ֤αʔϏεʹରԠͨ͠ "84؅ཧϙϦγʔͷಡΈऔΓݖݶ "84؅ཧϙϦγʔͷ֤αʔϏεʹରԠͨ͠ಡΈऔΓݖݶΛར༻͢Δ͜ͱͰɺ ϙϦγʔͷϝϯςϯεΛ͢Δඞཁ͕ͳ͘ͳΔϝϦοτ͋Γ  { "Version": "2012-10-17", "Statement": [

    { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } "84؅ཧϙϦγʔʮ"NB[PO&$3FBE0OMZ"DDFTTʯ FDҎ֎ʹ΋ؔ࿈͢ΔαʔϏεͷ Ұ෦ΞΫγϣϯ΋ؚ·Ε͍ͯΔ l FMBTUJDMPBECBMBODJOH%FTDSJCF l DMPVEXBUDI-JTU.FUSJDT l DMPVEXBUDI(FU.FUSJD4UBUJTUJDT l DMPVEXBUDI%FTDSJCF l BVUPTDBMJOH%FTDSJCF
  17. "84؅ཧϙϦγʔʮ3FBE0OMZ"DDFTTʯ "84શମͷಡΈऔΓݖݶ͕ ͭͷϙϦγʔͰ࣮ݱͰ͖Δ఺͕ັྗ ҰํͰɺσʔλͷμ΢ϯϩʔυݖݶ͕Ұ෦ؚ·ΕͯΔ఺ʹ͸ཹҙ͕ඞཁ  { "Version": "2012-10-17", "Statement": [

    { "Effect": "Allow", "Action": ["ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances"], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } "84؅ཧϙϦγʔʮ3FBE0OMZ"DDFTTʯ 4ΦϒδΣΫτͷμ΢ϯϩʔυͳͲɺ σʔλΛऔಘͰ͖Δݖݶ͕Ұ෦ؚ·ΕΔ "#"$Λಋೖ͢Δ "84ΞΧ΢ϯτͰ͸ɺ ෳ਺γεςϜ͕ࠞࡏ͍ͯ͠Δ͜ͱ͕ଟ͍ ͨΊɺؔ࿈͠ͳ͍γεςϜͷσʔλ͕औ ಘͰ͖Δ఺͕໰୊ͳ͍͔ͷ֬ೝ͸ඞཁ
  18. λάΤσΟλʹΑΔλάͷੋਖ਼  λάΤσΟλػೳΛར༻ͯ͠ɺλά෇༩ϛεͷमਖ਼͕Մೳ ྫ͑͹ɺ1SPKFDUλάʹؔ͢ΔԼදͷΑ͏ͳεϖϧϛεͷੋਖ਼ʹ໾ཱͭ ޡͬͨλάͷΩʔ໊ ޡ͍ͬͯΔཧ༝ QSPKFDU 1͕খจࣈ 1SPKFU D͕ൈ͚͍ͯΔ

    1SPKFUD Dͱ U͕ೖΕସΘ͍ͬͯΔ 1SPKFFDU F ͕ଟ͍ 1SPKFDUT ࠷ޙʹ T͕͍͍ͭͯΔ <1SPKFDU> ࠷ޙʹεϖʔε͕ೖ͍ͬͯΔ <1SPKFDU> ࠷ॳʹεϖʔε͕ೖ͍ͬͯΔ
  19. εΠονϩʔϧͰ͖Δ৚݅΋ "#"$Ͱ੍ޚ  *".ϢʔβʔͷڐՄϙϦγʔʹ͓͚Δ TUT"TTVNF3PMFͷ $POEJUJPOʹɺ *".ϢʔβʔͷλάͱεΠονϩʔϧઌͷ *".ϩʔϧͷλάͷҰகΛؚΊΔ { "Version":

    "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "*", "Condition": { "StringEquals": { "iam:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } ڐՄϙϦγʔ
  20. ηΩϡϦςΟάϧʔϓͷ "#"$  ηΩϡϦςΟάϧʔϓͷઃఆมߋ΋ "#"$Ͱ࣮ݱՄೳʢͰ͋Δ͕ʜʣ { "Version": "2012-10-17", "Statement": [

    { "Effect": "Allow", "Action": ["ec2:List*", "ec2:Describe*", "ec2:Get*"], "Resource": "*" }, { "Effect": "Allow", "Action": "ec2:*", "Resource": "*", "Condition": { "StringEquals": { "ec2:ResourceTag/Project": "${aws:PrincipalTag/Project}" } } } ] } ڐՄϙϦγʔ
  21. ηΩϡϦςΟάϧʔϓͷ "#"$  Ϛωδϝϯτίϯιʔϧ্Ͱૢ࡞͢Δલఏʹ͓͍ͯɺ ϧʔϧͷ௥Ճɾ࡟আ͸Ͱ͖Δ͕ɺมߋ͸Ͱ͖ͳ͍ʢλάΛ෇͚Δ·Ͱ͸ʣ ηΩϡϦςΟάϧʔϓ <1SPKFDUXBGGMFT> Πϯό΢ϯυϧʔϧ r 5$1ڐՄ

    <1SPKFDUXBGGMFT> Πϯό΢ϯυϧʔϧ r 5$1ڐՄ <λάͳ͠> ηΩϡϦςΟάϧʔϓʹର͢Δ Πϯό΢ϯυϧʔϧͷ࡟আ͸Մೳ