AWS CLI で GuardDuty の describe-organization-configuration 実行時に「an invalid or out-of-range value is specified as an input parameter」が発生する場合の対処方法

2023.03.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

GuardDuty の Organizations 構成機能を確認する際には AWS CLI の describe-organization-configuration というコマンドを使うことが出来ます。

先日次の記事のためにアップデート情報を検証していた際にこのコマンドを使用したのですが、見慣れないエラーが発生しました。

解決方法は非常に単純なのですが、エラーメッセージで調べたり公式ドキュメントを確認しても解決方法が見当たらなかったので、同じように困った方がエラーメッセージから調べることができるようにブログに情報を残しておくことにしました。

The request is rejected because an invalid or out-of-range value is specified as an input parameter.

describe-organization-configuration ではdetector-idをパラメータに指定するだけのシンプルなコマンドなのですが、次のようなエラーが発生しました。

% aws guardduty list-detectors --profile hogeadmin 
{
    "DetectorIds": [
        "84c37b7e081aaa9dfb8fc40fb8b7e200"
    ]
}
% aws guardduty describe-organization-configuration --detector-id 84c37b7e081aaa9dfb8fc40fb8b7e200 --profile hogeadmin

An error occurred (BadRequestException) when calling the DescribeOrganizationConfiguration operation: The request is rejected because an invalid or out-of-range value is specified as an input parameter.

AWS CLI のバージョンは本日時点で最新の v1.27.99 と v2.11.6 で確認しています。

OutOfRange なんて言われると AWS CLI のバグっぽい感じも少ししますが、本日時点ではどのバージョンの AWS CLI でも発生していました。
同様の事象が発生している人がいるか調べてみましたが見つからず。

そもそものコマンドが Organizations に関連したものであることから、GuardDuty の組織周りの設定をひとつづつ見直すことにしました。

組織の信頼されたアクセスを有効化しても利用出来ない

コマンドは Organizations の管理アカウントから実行しています。
まずは Organizations の信頼アクセス設定を最初に疑いました。

GuardDuty の信頼されたアクセスを有効化しました。
しかし、エラーメッセージは解決しませんでした。

GuradDuty アカウント一覧にメンバーアカウントが追加されていても出来ない

GuardDuty では AWS Organizations を使用している場合にメンバーアカウントを管理化に置いて GuardDuty の一括有効化などを行うことが出来ます。
GuardDuty のアカウントメニューを確認したところ、アカウントが 1 件も登録されていませんでした。

ひとつもメンバーアカウントが登録されていないせいかと思い、メンバーアカウントを追加してみました。

アカウントを追加することは出来ましたが、事象は解決しませんでした。

委任された管理者の設定が必要だった

今回は Organizations の管理アカウントでコマンドを実施していたので組織に対しての権限があるものだと思いこんでいました。
CloudTrail Lake などでは委任管理者を設定せずに管理アカウントで操作を実施することが出来ますが、どうやら GuardDuty では委任管理者設定が必須のようです。

仮に管理アカウントで管理を行いたい場合は自身を委任管理者として設定する必要があります。
なお、委任管理者を管理アカウントとすべきかどうかについては本記事では言及しません。

上記のように委任管理者を設定後にエラーが発生していたコマンドを実行してみました。

% aws guardduty describe-organization-configuration --detector-id "84c37b7e081aaa9dfb8fc40fb8b7e200" --profile hogeadmin   
{
    "AutoEnable": false,
    "MemberAccountLimitReached": false,
    "DataSources": {
        "S3Logs": {
            "AutoEnable": false
        },
        "Kubernetes": {
            "AuditLogs": {
                "AutoEnable": false
            }
        },
        "MalwareProtection": {
            "ScanEc2InstanceWithFindings": {
                "EbsVolumes": {
                    "AutoEnable": false
                }
            }
        }
    },
    "Features": [
        {
            "Name": "S3_DATA_EVENTS",
            "AutoEnable": "NONE"
        },
        {
            "Name": "EKS_AUDIT_LOGS",
            "AutoEnable": "NONE"
        },
        {
            "Name": "EBS_MALWARE_PROTECTION",
            "AutoEnable": "NONE"
        },
        {
            "Name": "RDS_LOGIN_EVENTS",
            "AutoEnable": "NONE"
        }
    ],
    "AutoEnableOrganizationMembers": "NONE"
}

正常なレスポンスを取得することが出来るようになりました。

さいごに

本日は AWS CLI で GuardDuty の describe-organization-configuration 実行時に「an invalid or out-of-range value is specified as an input parameter」が発生する場合の対処方法を紹介しました。

非常に単純な問題ではありますが、エラーメッセージから全く理由がわからなかったので最初途方に暮れました。
また、意外にも公式ドキュメントや DevelopersIO、AWS CLI の GitHub Issues にも情報が見当たらなかったので、まとめておくと同じようなエラーが出て困った方の参考になるかもしれないなと思い記事にしました。