ユーザ用ツール

サイト用ツール


aws:organizations:scp

AWS OrganizationsのSCP(Service Control Policy)とは。SCPサンプル

SCP(Service Control Policy)とは

  • SCPを使用するためには、Organizationsですべての機能を有効にする必要があります。
  • OUには継承以外に1つ以上のSCPを直接アタッチすることが必要です。


SCP作成方法

SCPの作成

  1. サービスコントロールポリシーページで、[ポリシーの作成] を選択します。
  2. [Create new service control policy] (新しいサービスコントロールポリシーの作成) ページで、[Policy name] (ポリシー名) とオプションの [Policy description] (ポリシーの説明) に入力します。

アタッチ

  1. 作ったポリシーにチェックを入れて、「アクション」から「ポリシーのアタッチ」を選択
  2. アタッチしたい組織単位(OU)を選択して、「ポリシーのアタッチ」をクリック


ルートユーザーによるサービスへのアクセスをブロックする

一般的な例 - AWS Organizations

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "RestrictEC2ForRoot",
      "Effect": "Deny",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:root"
          ]
        }
      }
    }
  ]
}


ユーザーによる GuardDuty の無効化または設定の変更を禁止する

Amazon GuardDuty の SCP の例 - AWS Organizations

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [ 
                "guardduty:AcceptInvitation",
                "guardduty:ArchiveFindings",
                "guardduty:CreateDetector",
                "guardduty:CreateFilter",
                "guardduty:CreateIPSet",
                "guardduty:CreateMembers",
                "guardduty:CreatePublishingDestination",
                "guardduty:CreateSampleFindings",
                "guardduty:CreateThreatIntelSet",
                "guardduty:DeclineInvitations",
                "guardduty:DeleteDetector",
                "guardduty:DeleteFilter",
                "guardduty:DeleteInvitations",
                "guardduty:DeleteIPSet",
                "guardduty:DeleteMembers",
                "guardduty:DeletePublishingDestination",
                "guardduty:DeleteThreatIntelSet",
                "guardduty:DisassociateFromMasterAccount",
                "guardduty:DisassociateMembers",
                "guardduty:InviteMembers",
                "guardduty:StartMonitoringMembers",
                "guardduty:StopMonitoringMembers",
                "guardduty:TagResource",
                "guardduty:UnarchiveFindings",
                "guardduty:UntagResource",
                "guardduty:UpdateDetector",
                "guardduty:UpdateFilter",
                "guardduty:UpdateFindingsFeedback",
                "guardduty:UpdateIPSet",
                "guardduty:UpdatePublishingDestination",
                "guardduty:UpdateThreatIntelSet"
            ],      
            "Resource": "*"
        }
    ]
}


ユーザーによる VPC フローログの削除を禁止する

Amazon Virtual Private Cloud (Amazon VPC) の SCP の例 - AWS Organizations

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:DeleteFlowLogs",
        "logs:DeleteLogGroup",
        "logs:DeleteLogStream"
      ],
      "Resource": "*"
    }
  ]
 }


ユーザーによる AWS Config の無効化またはルールの変更を禁止する

AWS Config の SCP の例 - AWS Organizations

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "config:DeleteConfigRule",
        "config:DeleteConfigurationRecorder",
        "config:DeleteDeliveryChannel",
        "config:StopConfigurationRecorder"
      ],
      "Resource": "*"
    }
  ]
}


IP制限をかけるSCP

AWS Organizations の SCP を使って特定のIPアドレスのみで AWS が利用できるようにしてみよう #AWS - Qiita

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Statement1",
      "Effect": "Deny",
      "Action": "*",
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringLike": {
          "aws:username": [
            "*"
          ]
        },
        "NotIpAddress": {
          "aws:SourceIp": [
            "x.x.x.x/24",
            "x.x.x.x/24"
          ]
        },
        "Bool": {
          "aws:ViaAWSService": "false"
        }
      }
    }
  ]
}
  • aws:username: “*” としているので、IAM User による操作が対象です。
  • NotIpAddressとしているので、aws:SourceIP に指定した特定のIPアドレス範囲以外からのアクセスが対象です。
  • aws:ViaAWSService: false としているので、 AWS サービスを経由したものではない(例:AWS CloudFormation による操作ではない)場合が対象です。


AWSで利用できるリージョンを制限

参考:AWS Organizations の SCP を使ってリージョン制限をかけてみよう #AWS - Qiita
利用できるリージョンを東京リージョン(ap-northeast-1)とグローバルサービスのためにバージニア北部リージョン(us-east-1)のみに制限する

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "denyRegion",
            "Effect": "Deny",
            "Action": [
                "*"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:RequestedRegion": [
                        "ap-northeast-1",
                        "us-east-1"
                    ]
                }
            }
        }
    ]
}


IAMの一部操作を禁止するSCP

参考:AWS OrganizationsのSCP設計で参考になりそうなサンプルポリシーを作成してみる - サーバーワークスエンジニアブログ

  • アクセスキーの作成を禁止
  • IAMのパスワードポリシーの削除を禁止
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyIAMOperations",
      "Effect": "Deny",
      "Action": [
        "iam:CreateAccessKey",
        "iam:DeleteAccountPasswordPolicy"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}


AWSリソース構築時のストレージ暗号化を強制

参考:AWS OrganizationsのSCP設計で参考になりそうなサンプルポリシーを作成してみる - サーバーワークスエンジニアブログ

  • EBS構築時にストレージ暗号化を強制
  • RDS構築時にストレージ暗号化を強制
  • EFS構築時にストレージ暗号化を強制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ForceRDSStorageEncryption",
      "Effect": "Deny",
      "Action": [
        "rds:CreateDBInstance",
        "rds:CreateDBCluster"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "Bool": {
            "rds:StorageEncrypted": "false"
        }
      }
    },
    {
      "Sid": "ForceEBSStorageEncryption",
      "Effect": "Deny",
      "Action": [
        "ec2:RunInstances",
        "ec2:CreateVolume"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "Bool": {
            "ec2:Encrypted": "false"
        }
      }
    },
    {
      "Sid": "ForceEFSStorageEncryption",
      "Effect": "Deny",
      "Action": [
        "elasticfilesystem:CreateFileSystem"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "Bool": {
            "elasticfilesystem:Encrypted": "false"
        }
      }
    }
  ]
}


参考

aws/organizations/scp.txt · 最終更新: 2024/02/11 00:43 by kurihara

ページ用ツール