[小ネタ] AWS ALB(Application Load Balancer)のDescribeRules APIのレスポンスにはClientSecretが含まれない

2018.08.06

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

ども、大瀧です。
ALBでサポートされたOpenID Connect認証は設定する項目が多いので、設定をコピーするためにAWS CLIを使おうとしたらハマったので共有します。

DescribeRules APIのレスポンスにはClientSecretが含まれない

既存の設定を出力するDescribeRules APIのレスポンスでは、見出しの通りClientSecretが取り除かれます。AWS CLIで実行した例を示します。

$ aws elbv2 describe-rules \
  --rule-arn arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:listener-rule/app/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX
{
    "Rules": [
        {
            "Priority": "29",
            "Conditions": [
                {
                    "Field": "host-header",
                    "Values": [
                        "endpoint1.example.com"
                    ]
                }
            ],
            "RuleArn": "arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:listener-rule/app/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX",
            "IsDefault": false,
            "Actions": [
                {
                    "AuthenticateOidcConfig": {
                        "OnUnauthenticatedRequest": "authenticate",
                        "TokenEndpoint": "https://auth.example.com/oauth/token",
                        "ClientId": "client1",
                        "SessionTimeout": 604800,
                        "AuthorizationEndpoint": "https://auth.example.com/oauth/authorize",
                        "Scope": "root",
                        "SessionCookieName": "AWSELBAuthSessionCookie",
                        "UserInfoEndpoint": "https://auth.example.com/userinfo",
                        "Issuer": "https://auth.example.com"
                    },
                    "Type": "authenticate-oidc",
                    "Order": 1
                },
                {
                    "TargetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:targetgroup/tg1/XXXXXXXXXXXX",
                    "Type": "forward",
                    "Order": 2
                }
            ]
        }
    ]
}
$

このため、レスポンスのRules[].Actions[].AuthenticateOidcConfig辺りをModifyRule APIのリクエストに流用しようとするとエラーになります。

$ aws elbv2 modify-rule --actions '(略)' \
  --rule-arn arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:listener-rule/app/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX/XXXXXXXXXXXX

Parameter validation failed:
Missing required parameter in Actions[1].AuthenticateOidcConfig: "ClientSecret"
$

秘匿情報の扱いとしては妥当と言えば妥当な気もしますが、改めてClientSecretを準備する点に気をつけましょう。ドキュメントには特に記述が無い点にも注意です。

参考URL