[小ネタ] AWS ALB(Application Load Balancer)のDescribeRules APIのレスポンスにはClientSecretが含まれない
ども、大瀧です。
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を準備する点に気をつけましょう。ドキュメントには特に記述が無い点にも注意です。