AWSのSCP設定してみる



なかなか使う機会がなかったですが、SCPを検証する機会がありましたので残します。

# ・SCPとは？

> Service Control Policies（SCP）は、AWS Organizationsで使用できるポリシーの一種で、組織全体または特定のOU（Organizational Units）に対して、AWSサービスやリソースへのアクセス権限を管理するための機能です。

簡単に説明するとAWSアカウント自体に設定できるIAMポリシーのようなものです。
これで制限をかけると、設定次第ではルートユーザーでもDenyが出ます。
アカウントのガードレールと表現されるケースもあるようですね。

かなり強力な機能となるので使い方を間違えてしまうと大事故になりますが、逆に有効活用できれば強力にセキュリティなど大幅強化する事も可能です。

# ・初期設定（機能有効化）

SCPを利用するには、まずAWS Organizationsの機能を有効化する必要があります。
ここではOrganizationsの有効化済みである事とし、以下に説明していきます。

まずはOrganizationsのページへ移動し、現在は無効化状態である事を確認しました。

![1_20240723074327.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/a96069c3-ce08-5de5-6cb2-c9a632cec6db.png)

設定ページの方に「すべての機能を有効にするプロセスを開始する」とありますが、これを有効化する必要があるようです。

![2_20240723074506.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/a239f5a8-ed47-a724-1f1b-904c95a8fbb7.png)


進むと以下のような文言があります。確認して進めるようにしましょう。
子アカウントの数が多いとかなり大変な作業になる可能性がありそうですね。

引用
> すべての機能を有効にするプロセスを開始すると、AWS Organizations は組織内のすべてのメンバーアカウントに承認リクエストのEメールメッセージを送します。
招待されたすべてのアカウントの所有者がリクエストを承認する必要があります。
すべてが承認したら、プロセスを完了して、AWS Organizations のアドバンスト機能の使用を開始できます。

> アカウントの所有者がリクエストを拒否した場合、すべての機能を有効にするプロセスを完了する前に、そのアカウントを組織から除外するか、リクエストを再送して承認を受ける必要があります。
それ以外の場合、リクエストは90日後に期限切れとなり、プロセスを再度開始する必要があります。

> 重要：
プロセスを完了すると、この変更を元に戻すことはできません。すべての機能を有効にすると、一括請求（コンソリデーティッドピリング）のすべての機能に加えて、AWs Organization の高度な管理機能を利用できます。ただし、変更をロールバックして、一括請求機能のみのサポートに戻ることはできません。

![3_20240723075058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/f69f2be5-3041-418a-9c68-ea1655998eef.png)


どうやら招待されたアカウントのみメールでの認証が必要のようですね。
今回の検証では招待アカウントはなかったので対応は不要でした！

開始すると親アカウントに対して以下のようなメールが届きました。

件名（以下3通）
・Your AWS organization has started the process to enable all features
・Action required: Finish enabling all features for your AWS organization
・Your AWS organization has now enabled all features

![4_20240723075159.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/94d03621-0492-ed9e-dd2d-8f8f94e3433c.png)


すべての機能有効化は完了しましたが、この時点ではまだSCPを使用できません。

![5_20240723080446.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/fd3bfef4-51d6-004d-17d8-c0e05a15c792.png)


個別で有効化しましょう

![6_20240723080503.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/c554da76-7dfd-e4fd-a217-b0f3aecbc3f6.png)


有効化できたので早速見てみますが、デフォルトではFullAccessのみです

![7_20240723080610.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/eb98855c-11d7-8ec5-583a-04607cabcb1a.png)




# ・実際にポリシー適用してSCPを検証

実際の設定例として、特定リージョンを制限するポリシーを設定してみます。

以下はオレゴンリージョンにだけアクセスできないpolicy

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-west-2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}
```

ポリシーをアタッチします

![8_20240723082119.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/586b6c37-d99f-56b3-f14c-a9a1fb7f7003.png)


adminであっても拒否されている事を確認しました

![9_20240723082214.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/954355/18822815-30ad-71fc-5134-e547a0f58961.png)



# ・最後に
SCPはAWS Organizationsの強力な機能で、組織全体のアクセス制御やセキュリティポリシーの管理を簡素化します。
強力すぎる部分もあるので、取り扱いには注意ですね。
ぜひ、SCPを活用して、組織のガバナンス強化に役立ててください！