サービスコントロールポリシーの例 - AWS Organizations

サービスコントロールポリシーの例

このトピックで表示されているサービスコントロールポリシー (SCP) の例は、情報提供のみを目的としています。

これらの例を使用する前に

組織内でこれらの SCP 例の使用を試みる前に、次を実行します。

  • お客様に特有の要件に応じて SCP を慎重に確認してカスタマイズします。

  • ポリシーは、本稼働環境のキャパシティーで使用する前にテストしてください。SCP は、すべてのユーザーやロール、アタッチされているすべてのアカウントのルートユーザーに影響を及ぼします。

ヒント

IAMサービスの最終アクセス時間データを使用して SCP を更新し、必要な AWS サービスのみにアクセスを制限できます。詳細については、IAM ユーザーガイドの「Organizations の Organizations サービスの最終アクセス時間データの表示」を参照してください。

次の各種ポリシーは、「拒否リストポリシー」戦略の例です。拒否リストポリシーは、影響を受けるアカウントの承認済みアクションを許可する他のポリシーと合わせてアタッチする必要があります。たとえば、デフォルトの FullAWSAccess ポリシーは、アカウントによるすべてのサービスの使用を許可します。このポリシーは、デフォルトによって、ルート、すべての組織ユニット (OU)、およびすべてのアカウントにアタッチされます。実際、アクセス許可は付与されません。付与する SCP がないためです。代わりに、そのアカウントの管理者は、アカウントのユーザーやロール、またはグループに標準の IAM アクセス許可ポリシーをアタッチして、それらのアクションへのアクセスを委任することができます。これらの各拒否リストポリシーによって、指定されたサービスまたはアクションへのアクセスがブロックされ、ポリシーはすべて上書きされます。

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

この SCP では、影響を受けるアカウントのユーザーまたはロールは、コマンドとして直接、またはコンソールから GuardDuty ログを無効化したり、設定を変更することはできなくなります。GuardDuty 情報およびリソースへの読み取り専用アクセスを効果的に可能にします。

{ "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": "*" } ] }

例 2: ユーザーによる Amazon CloudWatch の無効化または設定の変更を禁止する

下位レベルの CloudWatch オペレーターは、ダッシュボードやアラームをモニタリングする必要がありますが、上司が配置する可能性のあるダッシュボードやアラームを削除または変更できないようにする必要があります。この SCP では、影響を受けるアカウントのユーザーまたはロールは、ダッシュボードまたはアラームを削除または変更する可能性のある CloudWatch コマンドを実行できなくなります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DeleteDashboards", "cloudwatch:DisableAlarmActions", "cloudwatch:PutDashboard", "cloudwatch:PutMetricAlarm", "cloudwatch:SetAlarmState" ], "Resource": "*" } ] }

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

この SCP では、影響を受けるアカウントのユーザーまたはロールは Amazon EC2 フローログ、CloudWatch ロググループまたはログストリームを削除できなくなります。

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

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

この SCP は、影響を受けるアカウントのユーザーまたはロールは、AWS Config の無効化や、ルールまたはトリガーの変更を無効にする可能性のある AWS Config オペレーションを実行できなくなります。

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

例 5: インターネットアクセスに接続されていない VPC を使用した取得を禁止する

この SCP では、影響を受けるアカウントのユーザーまたはロールは、Amazon EC2 仮想プライベートクラウド (VPC) の設定を変更して、インターネットへの直接アクセスを許可しないようにします。既存の直接アクセスや、オンプレミスネットワーク環境を経由するアクセスはブロックされません。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ec2:AttachInternetGateway", "ec2:CreateInternetGateway", "ec2:CreateEgressOnlyInternetGateway", "ec2:CreateVpcPeeringConnection", "ec2:AcceptVpcPeeringConnection", "globalaccelerator:Create*", "globalaccelerator:Update*" ], "Resource": "*" } ] }

例 6: リクエストされたリージョンに基づいて、AWS へのアクセスを拒否する

この SCP は、eu-central-1 および eu-west-1 リージョン外でのオペレーションへのアクセスを拒否します。これにより、承認されたグローバルサービスでオペレーションが除外されます。この SCP を使用するには、ポリシー例の赤の斜体テキストを自分の情報に置き換えます。

重要

組織で AWS Control Tower を使用する場合は、このポリシー例を使用しないことをお勧めします。AWS Control Tower は、このポリシー例と互換性のない形で AWS リージョン間で動作します。

このポリシーは、Deny 効果を使用して、承認された 2 つのリージョン (eu-central-1 および eu-west-1) のいずれかをターゲットとしないオペレーションに対するリクエストへのアクセスを拒否します。NotAction 要素を使用すると、すべてのオペレーション (または個別のオペレーション) がこの制限から除外されるサービスのリストを指定できます。グローバルサービスには us-east-1 リージョンによって物理的にホストされるエンドポイントがあるため、この方法で除外される必要があります。このように構成された SCP では、リクエストされたサービスが NotAction 要素に含まれている場合、us-east-1 リージョン内のグローバルサービスに対するリクエストが許可されます。us-east-1 リージョン内のサービスに対するその他のリクエストは、このポリシー例によって拒否されます。

コメント
  • この例では、AWS のグローバルサービスまたはオペレーションを網羅しようとはしていません。 赤の斜体で示されているサービスとオペレーションのリストを組織内のアカウントによって使用されるグローバルサービスで置換えてください。

    ヒント

    IAM コンソールでサービスの最終アクセスデータを表示して、組織が使用しているグローバルサービスを確認できます。IAM ユーザー、グループ、またはロールの詳細ページの [Access Advisor] タブには、そのエンティティにより使用された AWS サービスが、アクセスの新しい順にソートされて表示されます。

  • このポリシー例では、AWS Security Token Service のグローバルエンドポイント (sts.amazonaws.com) へのアクセスをブロックします。このポリシーで AWS STS を使用するには、AWS STS リージョン別エンドポイントを使用するか、NotAction 要素に "sts:*" を追加する必要があります。AWS STS のエンドポイントの詳細については、『IAM ユーザーガイド』の「AWS リージョンでの AWS STS のアクティブ化と非アクティブ化」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllOutsideEU", "Effect": "Deny", "NotAction": [ "a4b:*", "artifact:*", "aws-portal:*", "budgets:*", "ce:*", "chime:*", "cloudfront:*", "cur:*", "datapipiline:GetAccountLimits", "directconnect:", "globalaccelerator:*", "health:*", "iam:*", "importexport:*", "mobileanalytics:*", "organizations:*", "resource-groups:*", "route53:*", "route53domains:*", "s3:GetBucketLocation", "s3:ListAllMyBuckets", "shield:*", "support:*", "tag:*", "trustedadvisor:*", "waf:*", "wellarchitected:*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": [ "eu-central-1", "eu-west-1" ] } } } ] }

例 7: IAM プリンシパルで特定の変更ができないようにする

この SCP はアカウントの IAM プリンシパルを制限して、組織内のすべてのアカウントに作成された一般的な管理 IAM ロールに変更を加えないようにします。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessToASpecificRole", "Effect": "Deny", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePermissionsBoundary", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::*:role/role-to-deny" ] } ] }

例 8: IAM プリンシパルで管理者を除き、特定の変更ができないようにする

この SCP は、前述の例において、管理者の例外を追加します。これによって、アカウント内の IAM プリンシパルが、指定されたロールを使用する管理者を除き、組織内のすべてのアカウントで作成された一般的な管理者 IAM ロールに変更を加えることができないようにします。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessWithException", "Effect": "Deny", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePermissionsBoundary", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::*:role/role-to-deny" ], "Condition": { "StringNotLike": { "aws:PrincipalARN":"arn:aws:iam::*:role/role-to-allow" } } } ] }

例 9: 指定するタイプを使用するよう Amazon EC2 インスタンスに要求する

この SCP を使用すると、t2.micro インスタンスタイプを使用していないすべてのインスタンスの起動は拒否されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireMicroInstanceType", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals":{ "ec2:InstanceType":"t2.micro" } } } ] }

例 10: Amazon EC2 インスタンスを停止するよう MFA に要求する

以下のような SCP を使用して、プリンシパルあるいはルートユーザーが Amazon EC2 インスタンスを停止する前に多要素認証 (MFA) を要求するようにします。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyStopAndTerminateWhenMFAIsNotPresent", "Effect": "Deny", "Action": [ "ec2:StopInstances", "ec2:TerminateInstances" ], "Resource": "*", "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": false}} } ] }

例 11: ルートユーザーの Amazon EC2 へのアクセス制限する

次のポリシーは、アカウントのルートユーザーによる Amazon EC2 アクションへのすべてのアクセスを制限します。アカウントで特定の方法のルート認証情報を使用できないようにするには、このポリシーに独自のアクションを追加します。

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

例 12: リソース作成時にタグをリクエストする

次の SCP は、アカウントプリンシパルが指定されたタグなしで特定のリソースタイプを作成できないようにします。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCreateSecretWithNoProjectTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyRunInstanceWithNoProjectTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyCreateSecretWithNoCostCenterTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } }, { "Sid": "DenyRunInstanceWithNoCostCenterTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } } ] }

AWS Organizations SCP および IAM アクセス権限ポリシーの両方でサポートされているすべてのサービスとアクションのリストは、IAM ユーザーガイドの「AWS のサービスのアクション、リソースおよび条件キー」を参照してください。