MWAA(Amazon Managed Workflows for Apache Airflow) の verify environment ツールの実行で発生した KMS Key policy に関するエラーの解消方法を教えてください

2023.10.02

困っていた内容

MWAA(Amazon Managed Workflows for Apache Airflow) の verify environment ツールの実行にて、下記エラーの表示を確認しました。

### Checking the kms key policy and if it includes reference to airflow
text 'airflow' and 'logs' do not appear in KMS key policy. Please check KMS key:  arn:aws:kms:ap-northeast-1:012345678901:key/e0a12345-bc6d-7e89-01f2-gh3i4j56k7l8 ?
for an example resource policy please see this doc:
https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html#mwaa-create-role-json

上記エラーを解消するため、エラー文に表示されている AWS 公式ドキュメントの内容を確認しましたが、修正等どのようにエラーを解消すれば良いか分かりませんでした。

上記のエラーの解消方法について教えてください。

どう対応すればいいの?

本エラー文で表示されている対象の KMS (arn:aws:kms:ap-northeast-1:012345678901:key/e0a12345-bc6d-7e89-01f2-gh3i4j56k7l8) のキーポリシーに、エラー文で案内されているドキュメントに記載の KMS のキーポリシー(例)を参考に設定をお試しください。

Then attach the following JSON policy to your Customer managed key. This policy uses the kms:EncryptionContext condition key prefix to permit access to your Apache Airflow logs group in CloudWatch Logs.

{
    "Sid": "Allow logs access",
    "Effect": "Allow",
    "Principal": {
        "Service": "logs.{your-region}.amazonaws.com"
    },
    "Action": [
        "kms:Encrypt*",
        "kms:Decrypt*",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:Describe*"
    ],
    "Resource": "*",
    "Condition": {
        "ArnLike": {
            "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:{your-region}:{your-account-id}:*"
        }
    }
}

補足

MWAA の verify environment ツール のソースコードはこちらの GitHub 上で公開されており、今回のエラーに関連している対象箇所は、こちら の記載部分が関係しています。

def check_kms_key_policy(input_env, kms_client):
        ~~~ 中略 ~~~
        if "airflow" not in policy and "aws:logs:arn" not in policy:
            print("text 'airflow' and 'logs' do not appear in KMS key policy. Please check KMS key: ",
                  input_env['KmsKey'], "?")
            print("for an example resource policy please see this doc: ")
            print("https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html#mwaa-create-role-json \n")
        else:
            print("KMS includes text 'airflow' and 'logs'", "✅")

上記のソースコードからも、冒頭で示したエラー文や前述の対応方法より、本エラーは KMS キーポリシーに 'airflow''logs'の文字列を含んだ記載がないことにより発生したものと考えられます。

参考資料