EC2 シリアルコンソールの宣言型ポリシーを適用してみた

EC2 シリアルコンソールの宣言型ポリシーを適用してみた

非 Control Tower 環境で EC2 シリアルコンソールアクセスの宣言型ポリシーを適用してみました。
Clock Icon2025.01.28

カスタマーサクセス部 運用支援チームのいたくらです。

はじめに

先日、許可された AMI の宣言型ポリシーの適用をやってみました。
https://dev.classmethod.jp/articles/202501-declarative-policy-for-allowed-amis/

今回は EC2 シリアルコンソールアクセスの宣言型ポリシーの適用と挙動の変化を確認してみました。

前提

前提として、自分が検証した環境について補足します。

  • AWS Organizations を有効化済みで、以下の OU 構成
    • 3.png
    • SandboxOU 配下には itkr_mem02(以降、アカウントA と表記)が存在
  • AWS Control Tower は有効化していない
  • 宣言型ポリシーは有効化済み
    • 有効化手順はこちらを参照ください
  • もしも本番環境で試そうとしている方は、宣言型ポリシーのアカウントステータスレポートを生成することをおすすめします
    • 生成手順はこちらを参照ください

やってみた

宣言型ポリシーを作成する

AWS Organizations のサービスページより、「ポリシー」>「EC2 の宣言型ポリシー」>「ポリシーを作成」の順にクリックすると、以下のような入力画面が表示されます。
サービス属性は「シリアルコンソールアクセス」を選択します。
18.png

ポリシー名、ポリシーの説明を入力します。
また、シリアルコンソールアクセスの場合は、コンソールアクセスを 許可する / 許可しない のチェックボックスのみです。
今回は 許可しない で設定するため、チェック無しで進めます。
最後にカスタムエラーメッセージを設定し、「ポリシーを作成」をクリックします。
※ カスタムエラーメッセージは日本語で設定したらエラーが出たので、英語で設定しましょう
10-1.png

作成が完了すると、利用可能なポリシー一覧に表示されます。
19.png

宣言型ポリシーをアタッチする

作成した宣言型ポリシーを SandboxOU にアタッチします。
12.png

13.png

作成した宣言ポリシーの詳細画面の「ターゲット」タブに、ポリシーをアタッチした SandboxOU が表示されていれば OK です。
14.png

宣言型ポリシーによる挙動の変化を確認する

宣言型ポリシー アタッチ前

SandboxOU 配下にある アカウント A で確認します。
適当にインスタンスを 1 台起動して、EC2 シリアルコンソールアクセスをしてみます。
6.png

7.png
特に問題なくアクセスができました。

宣言型ポリシー アタッチ後

同様に SandboxOU 配下にある アカウント A で確認します。
先ほどのインスタンスで再度 EC2 シリアルコンソールアクセスをしてみます。
15.png
「EC2 シリアルコンソールを使用する権限がありません」と表示されました。
ダメそうですが、確認のため「Manage access」をクリックしてみます。

おや、もしかして変更できるのか…?と淡い期待を込めて許可にチェックを入れて「更新」をクリックしてみます。
16.png

すると、EC2 サービスページの設定画面に飛ばされました。
ここにも書いているようにアクセスは禁止ですよ!と言われている気持ちになりました。
17.png
「管理」ボタンがグレーアウトの無効状態で、カーソルを置くと「This functionality has been disabled by a Declarative Policy.」と表示されました。
宣言型ポリシーで無効化されている機能ですよと教えてくれるのは親切だなと思いました。

カスタムエラーメッセージを確認してみる

アカウント A にて CloudShell を起動して、以下コマンドを実行して確認します。

~ $ aws ec2 get-serial-console-access-status 
{
    "SerialConsoleAccessEnabled": false,
    "ManagedBy": "declarative-policy"
}
~ $ 
~ $ aws ec2 enable-serial-console-access 

An error occurred (DeclarativePolicyViolation) when calling the EnableSerialConsoleAccess operation: This control is managed by your organizations administrator. This functionality has been disabled by a Declarative Policy. Custom Message: This action was denied by the declarative policy: test-ec2-serial-console-dp
~ $ 

get-serial-console-access-status で このアカウントの EC2 シリアルコンソールへのアクセスステータスを確認できます。
上記の実行結果より「宣言型ポリシーによって管理されていて、シリアルコンソールアクセスは許可されていない」ということが分かります。

また、enable-serial-console-access でシリアルコンソールアクセスを許可するに変更しようとすると、エラーメッセージが表示されて実行できません。
「Custom Message:」以降の文章が、先ほど宣言型ポリシー作成時に入力したカスタムエラーメッセージになっていることが分かります。

さいごに

EC2 シリアルコンソールアクセスの宣言型ポリシーの適用と挙動の変化を確認してみました。
普段はシリアルコンソールアクセスを使用する機会は無いと思うので、基本的にはシリアルコンソールアクセスを許可しないポリシーをアタッチしておけばいいと思いました。
もしも万一のことがあってシリアルコンソールアクセスが必要になってしまった場合のために、一時的に許可するポリシーに変更する運用手順を定めておくと安心かなと思いました。

この記事がどなたかのお役に立てれば幸いです。

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。
サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.