[アップデート] AWS Security Hub の新しいセキュリティスタンダード「AWS Resource Tagging Standard v1.0.0」を使って組織に必要なタグキーがリソースに設定されているか検出出来るようになりました

2024.05.02

いわさです。

先日 AWS Security Hub にアップデートがありまして、新たに「AWS Resource Tagging Standard v1.0.0」というものがリリースされました。
どうやらこれを使ってタグが設定されているか確認出来るようです。

セキュリティ基準で有効化するだけでも使える

後述しますが、必須のタグは Security Hub 上から指定も可能です。
ただ、デフォルトでも一応機能します。どんな挙動になるか紹介しますね。

日本語だと「AWS リソースタグ付け標準 v1.0.0」というセキュリティ基準です。
こちらを有効化しましょう。

新規で Security Hub を有効化する場合は以下から。

Security Hub を既に有効化済みの場合は以下から追加で有効化が可能です。

81 個のコントロールでタグが設定されているかどうか判定出来る

本日時点では 81 個のコントロールがサポートされており、それぞれのコントロールは「このリソースタイプにタグが設定されているか」をチェックするものとなっています。
また、全てのコントロールの Severity は Low となってます。

対象コントロール一式は次のドキュメントをご確認ください。
全ての AWS サービスがサポートされているわけではありません。

それぞれのコントロールから次のような Config ルールが作成されます。

デフォルトではリソースに何らかのタグ付けがされていない場合、FAILED と判断されます。

また、システムタグ(aws:から始まるタグキー)は判断されません。
CloudFormation などで作成されたリソースにはaws:cloudformation:logical-idなどのタグが自動で設定されますが、それらのタグのみが設定されたリソースは FAILED と判定されます。

カスタムパラメータを設定することでタグキーを指定できる

今回のコントロールはパラメータに対応しています。
re:Invent 2023 で Security Hub のコントロールにパラメータカスタマイズの機能が追加されているのをご存知でしたでしょうか。
私は知らなかったです。トレンディじゃなかった。

で、今回のアップデートで追加されたコントロールは全てパラメータに対応しています。
次のように各コントロールのパラメータタブから設定してみます。

設定出来るパラメータはチェック対象のタグキーです。
パラメータなしのデフォルトの場合はシステムタグ以外でタグが設定されていることを確認するものでしたが、この機能を使うと指定されたタグが設定されていることを確認することが出来ます。

ここでは次のようにhogeacmというタグキーを指定してみます。
コントロールは ACM 証明書です。

そして、各 ACM 証明書には次のようにタグを設定してみます。

% aws acm list-tags-for-certificate --certificate-arn arn:aws:acm:ap-northeast-1:123456789012:certificate/2d501475-e61d-4724-a55b-952a4610b21d --profile hogeadmin
{
    "Tags": [
        {
            "Key": "hogeacm",
            "Value": "111"
        }
    ]
}
% aws acm list-tags-for-certificate --certificate-arn arn:aws:acm:ap-northeast-1:123456789012:certificate/48d02cc7-6d14-40ed-b61d-f9e9d234a340 --profile hogeadmin
{
    "Tags": [
        {
            "Key": "fugaacm",
            "Value": "222"
        }
    ]
}
% aws acm list-tags-for-certificate --certificate-arn arn:aws:acm:ap-northeast-1:123456789012:certificate/8707f8ce-e29d-4d20-b482-6af900251e78 --profile hogeadmin
{
    "Tags": [
        {
            "Key": "piyoacm",
            "Value": "333"
        }
    ]
}

少し待つと次のようにひとつめの証明書のコンプライアンスステータスが PASSED になりました。良いですね。

カンマ区切りで複数タグキーを指定可能

Config ルール上だと、requiredTagKeysというパラメータに設定されます。
名前からすると複数設定出来そうですね。
ドキュメント上から私は読み取れなかったのですが、いくつか試した限りではカンマ区切りでパラメータ指定をすることで複数のキーを対象に出来るようです。

上記のパラメータを指定し、ACM 証明書へは次のタグを設定しました。

% aws acm list-tags-for-certificate --certificate-arn arn:aws:acm:ap-northeast-1:123456789012:certificate/48d02cc7-6d14-40ed-b61d-f9e9d234a340 --profile hogeadmin
{
    "Tags": [
        {
            "Key": "fugaacm",
            "Value": "222"
        },
        {
            "Key": "hogeacm",
            "Value": "111"
        }
    ]
}
% aws acm list-tags-for-certificate --certificate-arn arn:aws:acm:ap-northeast-1:123456789012:certificate/2d501475-e61d-4724-a55b-952a4610b21d --profile hogeadmin
{
    "Tags": [
        {
            "Key": "fugaacm",
            "Value": "222"
        }
    ]
}
% aws acm list-tags-for-certificate --certificate-arn arn:aws:acm:ap-northeast-1:123456789012:certificate/8707f8ce-e29d-4d20-b482-6af900251e78 --profile hogeadmin
{
    "Tags": [
        {
            "Key": "piyoacm",
            "Value": "333"
        }
    ]
}

検出結果としては、一つめの証明書のみが PASSED となりました。
よって、ここで複数のキーを指定した場合はどれかひとつのキーが設定されていれば良いというわけではなく、「その全てのキーが設定されていること」というチェックがされているようですね。

コントロールごとに設定しなければいけないのでちょっと面倒な感じもしますが、AWS CLI などでコントロールリストを拾ってきてパラメータ更新する感じになりそうです。

さいごに

本日は AWS Security Hub の新しいセキュリティスタンダード「AWS Resource Tagging Standard v1.0.0」を使って組織に必要なタグキーがリソースに設定されているか検出出来るようになったので使ってみました。

タグ周りの統制管理ということであればタグポリシーや Config ルールを使うことで従来も同様の管理をすることが出来ました。
今回のアップデートで、タグを使ったセキュリティ統制に関する仕組みを導入している場合にもセキュリティスコアとして反映出来る感じでしょうかね。

ABAC を使って環境分離しているとか、あるいは VALTIX のように特定のセキュリティ製品ではタグベースで制御を行う場合もあるかもしれません。