LoginSignup
0
1

[AWS] SCPでできること

Posted at

AWSアカウント全体でやっていいこと、やっちゃいけないことをAWS OrganizationsのSCPで制限したいケースがあると思うのですが、ご作法が色々あるので、備忘録的にメモする。

Principal/NotPrincipal句をかけない。

  • 代わりにConditionでがんばる
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAssumeRoleToKeyMGRfromSSOuser",
      "Effect": "Deny",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::*:role/testRole0*",
      "Condition": {
        "ArnLike": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_myTestAccessPermissions_*"
        }
      }
    }
  ]
}
  • Condition句でPrincipalを指定する場合は、PrincipalArnで指定するのがわかりやすいPrincipalArnで指定できるパターンは以下の4つ(ユーザガイド
    • IAM ロール(arn:aws:iam::123456789012:role/role-name)
    • IAM ユーザー(arn:aws:iam::123456789012:user/user-name)
    • AWS STS フェデレーションユーザーセッション(arn:aws:sts::123456789012:federated-user/user-name)
    • AWS アカウント ルートユーザー(arn:aws:iam::123456789012:root)
⭕️ "aws:PrincipalArn": "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_*" iamはユーザでもOK
⭕️ "aws:PrincipalArn": "arn:aws:sts::123456789012:federated-user/user-*" # sts/federated-userはOK
❌ "aws:PrincipalArn": "arn:aws:sts::*:assumed-role/AWSReservedSSO_*"    # sts/assumed-roleはかけない
  • IAM Identity CenterとかでSSOしてたり、踏み台AWSアカウントとかを使っているとassumed-roleのArnを使いたくなるが、aws:PrincipalArnではassumed-roleは指定できないので要注意。

Resource句はDenyでしか使えない。(Allowでは*としか書けない)

そして、NotResourceはAllowでもDenyでも使えない。

⭕️ できること

  • このリソースはこの人しか使っちゃダメ(PrinsipalArnのStringNotEquals条件を使ったResouce指定Deny)
  • このリソースタイプは使っちゃダメ(ワイルドカードResouce指定Deny)

❌ できないこと

  • このリソースタイプだけなら使ってOK(Allow)
  • この人はこのリソースのみ使ってOK(Allow)
  • このリソース以外は使ってOK(Allow)
  • このリソース以外は使っちゃダメ(NotResourceを使用したDeny)

以下はユーザガイドより

Effect 要素に Allow の値があるステートメントでは、SCP の Resource 要素の「*」のみを指定することができます。個々のリソースの Amazon リソースネーム (ARN) を指定することはできません。
https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps_syntax.html#scp-syntax-resource

リソース要素でアスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用することもできます。
https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps_syntax.html#scp-syntax-resource

NotAction句はDenyでしか使えない。

普通にNotActionはDenyで使うことが多いと思うので、これはあまり気にならないはず。IAMポリシーとかだとNotActionを使ったAllow(このAction以外は使ってOK)という書き方はできるけど、無秩序な許可に繋がりやすいのでできるだけ使わない方が良い。

おすすめの使い方

おすすめの使い方がユーザガイドで公開されている。まずはそこから入るとよい。
https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/orgs_manage_policies_scps_examples_general.html

  • リージョン制限
    特定リージョン以外でのAPI実行は禁止する

  • 特権管理者以外による重要リソースの変更禁止
    特定のIAMロールやSSOユーザ以外は、全体統制に関わる重要リソースの操作ができないように制限する。たとえばアラート通知用SNS Topicの削除を禁止する。

  • ルートユーザの使用禁止
    Control Towerで払い出したAWSアカウントとかではrootユーザを使うシーンはほとんどないので、rootユーザはSCPで何にもできないようにしておくのがおすすめ。ちなみに、rootユーザでないとできないオペレーションはユーザガイドにリストされている。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1