Compare commits
5 Commits
Author | SHA1 | Date |
---|---|---|
|
8ec4a6e91f | |
|
84115f6516 | |
|
2333a7413c | |
|
9a203c8775 | |
|
127d696d33 |
18
CHANGELOG.md
18
CHANGELOG.md
|
@ -2,6 +2,24 @@
|
||||||
|
|
||||||
All notable changes to this project are documented in this file.
|
All notable changes to this project are documented in this file.
|
||||||
|
|
||||||
|
## 1.6.1
|
||||||
|
|
||||||
|
**Release date:** 2025-07-08
|
||||||
|
|
||||||
|
This patch release fixes a bug introduced in v1.6.0
|
||||||
|
that causes SOPS decryption with US Government KMS
|
||||||
|
keys to fail with the error:
|
||||||
|
|
||||||
|
```
|
||||||
|
STS: AssumeRoleWithWebIdentity, https response error\n StatusCode: 0, RequestID: ,
|
||||||
|
request send failed, Post\n \"https://sts.arn.amazonaws.com/\": dial tcp:
|
||||||
|
lookupts.arn.amazonaws.com on 10.100.0.10:53: no such host
|
||||||
|
```
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- Fix regression in STS endpoint for SOPS decryption with AWS KMS in US Gov partition
|
||||||
|
[#1478](https://github.com/fluxcd/kustomize-controller/pull/1478)
|
||||||
|
|
||||||
## 1.6.0
|
## 1.6.0
|
||||||
|
|
||||||
**Release date:** 2025-05-28
|
**Release date:** 2025-05-28
|
||||||
|
|
|
@ -5,4 +5,4 @@ resources:
|
||||||
images:
|
images:
|
||||||
- name: fluxcd/kustomize-controller
|
- name: fluxcd/kustomize-controller
|
||||||
newName: fluxcd/kustomize-controller
|
newName: fluxcd/kustomize-controller
|
||||||
newTag: v1.6.0
|
newTag: v1.6.1
|
||||||
|
|
2
go.mod
2
go.mod
|
@ -19,7 +19,7 @@ require (
|
||||||
github.com/cyphar/filepath-securejoin v0.4.1
|
github.com/cyphar/filepath-securejoin v0.4.1
|
||||||
github.com/dimchansky/utfbom v1.1.1
|
github.com/dimchansky/utfbom v1.1.1
|
||||||
github.com/fluxcd/cli-utils v0.36.0-flux.13
|
github.com/fluxcd/cli-utils v0.36.0-flux.13
|
||||||
github.com/fluxcd/kustomize-controller/api v1.6.0
|
github.com/fluxcd/kustomize-controller/api v1.6.1
|
||||||
github.com/fluxcd/pkg/apis/acl v0.7.0
|
github.com/fluxcd/pkg/apis/acl v0.7.0
|
||||||
github.com/fluxcd/pkg/apis/event v0.17.0
|
github.com/fluxcd/pkg/apis/event v0.17.0
|
||||||
github.com/fluxcd/pkg/apis/kustomize v1.10.0
|
github.com/fluxcd/pkg/apis/kustomize v1.10.0
|
||||||
|
|
|
@ -17,11 +17,27 @@ limitations under the License.
|
||||||
package awskms
|
package awskms
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"regexp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// arnRegex matches an AWS ARN, for example:
|
||||||
|
// "arn:aws:kms:us-west-2:107501996527:key/612d5f0p-p1l3-45e6-aca6-a5b005693a48".
|
||||||
|
// The regex matches both KMS keys and aliases, and supports different AWS partition names (aws, aws-cn, aws-us-gov).
|
||||||
|
//
|
||||||
|
// Copied from SOPS:
|
||||||
|
// https://github.com/getsops/sops/blob/b2edaade23453c8774fc28ec491ddbe2b9a4c994/kms/keysource.go#L30-L32
|
||||||
|
//
|
||||||
|
// ref:
|
||||||
|
// https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html
|
||||||
|
const arnPattern = `^arn:aws[\w-]*:kms:(.+):[0-9]+:(key|alias)/.+$`
|
||||||
|
|
||||||
|
var arnRegex = regexp.MustCompile(arnPattern)
|
||||||
|
|
||||||
// GetRegionFromKMSARN extracts the region from a KMS ARN.
|
// GetRegionFromKMSARN extracts the region from a KMS ARN.
|
||||||
func GetRegionFromKMSARN(arn string) string {
|
func GetRegionFromKMSARN(arn string) string {
|
||||||
arn = strings.TrimPrefix(arn, "arn:aws:kms:")
|
m := arnRegex.FindStringSubmatch(arn)
|
||||||
return strings.SplitN(arn, ":", 2)[0]
|
if m == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return m[1]
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,10 +25,70 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGetRegionFromKMSARN(t *testing.T) {
|
func TestGetRegionFromKMSARN(t *testing.T) {
|
||||||
|
for _, tt := range []struct {
|
||||||
|
arn string
|
||||||
|
expected string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
arn: "arn:aws:kms:us-west-2:107501996527:key/612d5f0p-p1l3-45e6-aca6-a5b005693a48",
|
||||||
|
expected: "us-west-2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws-cn:kms:cn-north-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
|
||||||
|
expected: "cn-north-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws-us-gov:kms:us-gov-west-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab",
|
||||||
|
expected: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:kms:us-west-2:107501996527:alias/my-key-alias",
|
||||||
|
expected: "us-west-2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:kms:us-west-2:107501996527:key/",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:kms:us-west-2:107501996527:alias/",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "not-an-arn",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:s3:::my-bucket",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:ec2:us-west-2:123456789012:instance/i-1234567890abcdef0",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:iam::123456789012:user/David",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:lambda:us-west-2:123456789012:function:my-function",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:dynamodb:us-west-2:123456789012:table/my-table",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:rds:us-west-2:123456789012:db:my-database",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
arn: "arn:aws:sns:us-west-2:123456789012:my-topic",
|
||||||
|
expected: "",
|
||||||
|
},
|
||||||
|
} {
|
||||||
|
t.Run(tt.arn, func(t *testing.T) {
|
||||||
g := NewWithT(t)
|
g := NewWithT(t)
|
||||||
|
g.Expect(awskms.GetRegionFromKMSARN(tt.arn)).To(Equal(tt.expected))
|
||||||
arn := "arn:aws:kms:us-east-1:211125720409:key/mrk-3179bb7e88bc42ffb1a27d5038ceea25"
|
})
|
||||||
|
}
|
||||||
region := awskms.GetRegionFromKMSARN(arn)
|
|
||||||
g.Expect(region).To(Equal("us-east-1"))
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue