Files
threshold/internal/server/repository_worker.go
T
dependabot[bot]andJohan Brandhorst-Satzkorn b56274391c chore(deps): bump the go group across 13 directories with 59 updates (#5782)
* chore(deps): bump the go group across 13 directories with 59 updates

Bumps the go group with 36 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/cenkalti/backoff/v4](https://github.com/cenkalti/backoff) | `4.2.1` | `4.3.0` |
| [github.com/creack/pty](https://github.com/creack/pty) | `1.1.21` | `1.1.24` |
| [github.com/docker/docker](https://github.com/docker/docker) | `27.1.1+incompatible` | `28.1.1+incompatible` |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.17.0` | `1.18.0` |
| [github.com/glebarez/sqlite](https://github.com/glebarez/sqlite) | `1.10.0` | `1.11.0` |
| [github.com/golang-migrate/migrate/v4](https://github.com/golang-migrate/migrate) | `4.17.0` | `4.18.3` |
| [github.com/grpc-ecosystem/grpc-gateway/v2](https://github.com/grpc-ecosystem/grpc-gateway) | `2.19.1` | `2.26.3` |
| [github.com/hashicorp/cap](https://github.com/hashicorp/cap) | `0.5.1-0.20240315182732-faa330bfb8df` | `0.9.0` |
| [github.com/hashicorp/eventlogger](https://github.com/hashicorp/eventlogger) | `0.2.9` | `0.2.11` |
| [github.com/hashicorp/go-bexpr](https://github.com/hashicorp/go-bexpr) | `0.1.13` | `0.1.14` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.17-0.20240313190905-91d44aa8e360` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/configutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.11` | `2.0.12` |
| [github.com/hashicorp/go-secure-stdlib/listenerutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.1.10` |
| [github.com/hashicorp/go-secure-stdlib/password](https://github.com/hashicorp/go-secure-stdlib) | `0.1.3` | `0.1.4` |
| [github.com/hashicorp/go-secure-stdlib/pluginutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.6` | `2.0.8` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/hashicorp/go-version](https://github.com/hashicorp/go-version) | `1.6.0` | `1.7.0` |
| [github.com/hashicorp/hcl](https://github.com/hashicorp/hcl) | `1.0.1-vault-5` | `1.0.1-vault-7` |
| [github.com/hashicorp/mql](https://github.com/hashicorp/mql) | `0.1.3` | `0.1.5` |
| [github.com/hashicorp/vault/api](https://github.com/hashicorp/vault) | `1.12.0` | `1.16.0` |
| [github.com/jackc/pgx/v5](https://github.com/jackc/pgx) | `5.6.0` | `5.7.5` |
| [github.com/jimlambrt/gldap](https://github.com/jimlambrt/gldap) | `0.1.10` | `0.1.14` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/miekg/dns](https://github.com/miekg/dns) | `1.1.58` | `1.1.66` |
| [github.com/oligot/go-mod-upgrade](https://github.com/oligot/go-mod-upgrade) | `0.9.1` | `0.11.0` |
| [github.com/ory/dockertest/v3](https://github.com/ory/dockertest) | `3.10.0` | `3.12.0` |
| [github.com/pires/go-proxyproto](https://github.com/pires/go-proxyproto) | `0.7.0` | `0.8.1` |
| [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) | `1.18.0` | `1.22.0` |
| [github.com/zalando/go-keyring](https://github.com/zalando/go-keyring) | `0.2.3` | `0.2.6` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc/cmd/protoc-gen-go-grpc](https://github.com/grpc/grpc-go) | `1.3.0` | `1.5.1` |
| [gorm.io/driver/postgres](https://github.com/go-gorm/postgres) | `1.5.9` | `1.5.11` |
| [nhooyr.io/websocket](https://github.com/nhooyr/websocket-old) | `1.8.10` | `1.8.17` |
| [golang.org/x/time](https://github.com/golang/time) | `0.5.0` | `0.11.0` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |

Bumps the go group with 10 updates in the /api directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/google/go-cmp](https://github.com/google/go-cmp) | `0.6.0` | `0.7.0` |
| [github.com/hashicorp/eventlogger](https://github.com/hashicorp/eventlogger) | `0.2.6-0.20231025104552-802587e608f0` | `0.2.11` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.61.0` | `1.72.1` |
| [nhooyr.io/websocket](https://github.com/nhooyr/websocket-old) | `1.8.10` | `1.8.17` |
| [github.com/hashicorp/boundary/sdk](https://github.com/hashicorp/boundary) | `0.0.48` | `0.0.52` |
| [golang.org/x/time](https://github.com/golang/time) | `0.3.0` | `0.11.0` |

Bumps the go group with 9 updates in the /plugins/boundary/mains/aws directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/hashicorp/eventlogger](https://github.com/hashicorp/eventlogger) | `0.2.10` | `0.2.11` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/pluginutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.7` | `2.0.8` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.68.0` | `1.72.1` |
| [github.com/hashicorp/boundary/sdk](https://github.com/hashicorp/boundary) | `0.0.51` | `0.0.52` |

Bumps the go group with 13 updates in the /plugins/boundary/mains/azure directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.16.0` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/eventlogger](https://github.com/hashicorp/eventlogger) | `0.2.6-0.20231025104552-802587e608f0` | `0.2.11` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/parseutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.2.0` |
| [github.com/hashicorp/go-secure-stdlib/pluginutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.6` | `2.0.8` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/hashicorp/go-version](https://github.com/hashicorp/go-version) | `1.3.0` | `1.7.0` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.59.0` | `1.72.1` |
| [github.com/hashicorp/boundary/sdk](https://github.com/hashicorp/boundary) | `0.0.39` | `0.0.52` |

Bumps the go group with 14 updates in the /plugins/boundary/mains/gcp directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.15.0` | `1.18.0` |
| [github.com/hashicorp/eventlogger](https://github.com/hashicorp/eventlogger) | `0.2.9` | `0.2.11` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/parseutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.2.0` |
| [github.com/hashicorp/go-secure-stdlib/pluginutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.6` | `2.0.8` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.9.0` | `1.10.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.66.0` | `1.72.1` |
| [github.com/hashicorp/boundary/sdk](https://github.com/hashicorp/boundary) | `0.0.47` | `0.0.52` |
| [golang.org/x/time](https://github.com/golang/time) | `0.6.0` | `0.11.0` |

Bumps the go group with 13 updates in the /plugins/boundary/mains/minio directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.15.0` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/eventlogger](https://github.com/hashicorp/eventlogger) | `0.2.6-0.20231025104552-802587e608f0` | `0.2.11` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/pluginutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.6` | `2.0.8` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.9.0` | `1.10.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.61.0` | `1.72.1` |
| [github.com/hashicorp/boundary/sdk](https://github.com/hashicorp/boundary) | `0.0.51` | `0.0.52` |

Bumps the go group with 12 updates in the /plugins/kms/mains/alicloudkms directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.14.1` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/parseutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.2.0` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.8.4` | `1.10.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.59.0` | `1.72.1` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |
| [github.com/hashicorp/go-kms-wrapping/wrappers/alicloudkms/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.3` | `2.0.4` |

Bumps the go group with 12 updates in the /plugins/kms/mains/awskms directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.14.1` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/parseutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.2.0` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.8.4` | `1.10.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.59.0` | `1.72.1` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |
| [github.com/hashicorp/go-kms-wrapping/wrappers/awskms/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.10` | `2.0.11` |

Bumps the go group with 13 updates in the /plugins/kms/mains/azurekeyvault directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.15.0` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/parseutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.2.0` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.9.0` | `1.10.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.59.0` | `1.72.1` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |
| [github.com/hashicorp/go-kms-wrapping/wrappers/azurekeyvault/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.11` | `2.0.14` |

Bumps the go group with 13 updates in the /plugins/kms/mains/gcpckms directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.14.1` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/parseutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.2.0` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.8.4` | `1.10.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.59.0` | `1.72.1` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |
| [github.com/hashicorp/go-kms-wrapping/wrappers/gcpckms/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.12` | `2.0.13` |

Bumps the go group with 12 updates in the /plugins/kms/mains/ocikms directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.14.1` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/parseutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.2.0` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.8.4` | `1.10.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.59.0` | `1.72.1` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |
| [github.com/hashicorp/go-kms-wrapping/wrappers/ocikms/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.8` | `2.0.9` |

Bumps the go group with 13 updates in the /plugins/kms/mains/transit directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.16.0` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-sockaddr](https://github.com/hashicorp/go-sockaddr) | `1.0.6` | `1.0.7` |
| [github.com/hashicorp/vault/api](https://github.com/hashicorp/vault) | `1.10.0` | `1.16.0` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [github.com/stretchr/testify](https://github.com/stretchr/testify) | `1.8.4` | `1.10.0` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [google.golang.org/grpc](https://github.com/grpc/grpc-go) | `1.59.0` | `1.72.1` |
| [golang.org/x/time](https://github.com/golang/time) | `0.3.0` | `0.11.0` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |
| [github.com/hashicorp/go-kms-wrapping/wrappers/transit/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.12` | `2.0.13` |

Bumps the go group with 14 updates in the /sdk directory:

| Package | From | To |
| --- | --- | --- |
| [github.com/fatih/color](https://github.com/fatih/color) | `1.15.0` | `1.18.0` |
| [github.com/golang/protobuf](https://github.com/golang/protobuf) | `1.5.3` | `1.5.4` |
| [github.com/grpc-ecosystem/grpc-gateway/v2](https://github.com/grpc-ecosystem/grpc-gateway) | `2.19.1` | `2.26.3` |
| [github.com/hashicorp/eventlogger](https://github.com/hashicorp/eventlogger) | `0.2.6-0.20231025104552-802587e608f0` | `0.2.11` |
| [github.com/hashicorp/go-hclog](https://github.com/hashicorp/go-hclog) | `1.5.0` | `1.6.3` |
| [github.com/hashicorp/go-kms-wrapping/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.16` | `2.0.18` |
| [github.com/hashicorp/go-secure-stdlib/configutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.11` | `2.0.12` |
| [github.com/hashicorp/go-secure-stdlib/listenerutil](https://github.com/hashicorp/go-secure-stdlib) | `0.1.9` | `0.1.10` |
| [github.com/hashicorp/go-secure-stdlib/pluginutil/v2](https://github.com/hashicorp/go-secure-stdlib) | `2.0.6` | `2.0.8` |
| [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable) | `0.1.13` | `0.1.14` |
| [golang.org/x/crypto](https://github.com/golang/crypto) | `0.37.0` | `0.38.0` |
| [golang.org/x/net](https://github.com/golang/net) | `0.39.0` | `0.40.0` |
| [nhooyr.io/websocket](https://github.com/nhooyr/websocket-old) | `1.8.10` | `1.8.17` |
| [github.com/hashicorp/go-kms-wrapping/plugin/v2](https://github.com/hashicorp/go-kms-wrapping) | `2.0.7` | `2.0.8` |



Updates `github.com/cenkalti/backoff/v4` from 4.2.1 to 4.3.0
- [Changelog](https://github.com/cenkalti/backoff/blob/v5/CHANGELOG.md)
- [Commits](https://github.com/cenkalti/backoff/compare/v4.2.1...v4.3.0)

Updates `github.com/creack/pty` from 1.1.21 to 1.1.24
- [Release notes](https://github.com/creack/pty/releases)
- [Commits](https://github.com/creack/pty/compare/v1.1.21...v1.1.24)

Updates `github.com/docker/docker` from 27.1.1+incompatible to 28.1.1+incompatible
- [Release notes](https://github.com/docker/docker/releases)
- [Commits](https://github.com/docker/docker/compare/v27.1.1...v28.1.1)

Updates `github.com/fatih/color` from 1.17.0 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/glebarez/sqlite` from 1.10.0 to 1.11.0
- [Release notes](https://github.com/glebarez/sqlite/releases)
- [Commits](https://github.com/glebarez/sqlite/compare/v1.10.0...v1.11.0)

Updates `github.com/golang-migrate/migrate/v4` from 4.17.0 to 4.18.3
- [Release notes](https://github.com/golang-migrate/migrate/releases)
- [Changelog](https://github.com/golang-migrate/migrate/blob/master/.goreleaser.yml)
- [Commits](https://github.com/golang-migrate/migrate/compare/v4.17.0...v4.18.3)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/google/go-cmp` from 0.6.0 to 0.7.0
- [Release notes](https://github.com/google/go-cmp/releases)
- [Commits](https://github.com/google/go-cmp/compare/v0.6.0...v0.7.0)

Updates `github.com/grpc-ecosystem/grpc-gateway/v2` from 2.19.1 to 2.26.3
- [Release notes](https://github.com/grpc-ecosystem/grpc-gateway/releases)
- [Changelog](https://github.com/grpc-ecosystem/grpc-gateway/blob/main/.goreleaser.yml)
- [Commits](https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.19.1...v2.26.3)

Updates `github.com/hashicorp/cap` from 0.5.1-0.20240315182732-faa330bfb8df to 0.9.0
- [Release notes](https://github.com/hashicorp/cap/releases)
- [Changelog](https://github.com/hashicorp/cap/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/cap/commits/v0.9.0)

Updates `github.com/hashicorp/eventlogger` from 0.2.9 to 0.2.11
- [Commits](https://github.com/hashicorp/eventlogger/compare/v0.2.9...v0.2.11)

Updates `github.com/hashicorp/go-bexpr` from 0.1.13 to 0.1.14
- [Release notes](https://github.com/hashicorp/go-bexpr/releases)
- [Commits](https://github.com/hashicorp/go-bexpr/compare/v0.1.13...v0.1.14)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.17-0.20240313190905-91d44aa8e360 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/configutil/v2` from 2.0.11 to 2.0.12
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.11...configutil/v2.0.12)

Updates `github.com/hashicorp/go-secure-stdlib/listenerutil` from 0.1.9 to 0.1.10
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...listenerutil/v0.1.10)

Updates `github.com/hashicorp/go-secure-stdlib/password` from 0.1.3 to 0.1.4
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/mlock/v0.1.3...awsutil/v0.1.4)

Updates `github.com/hashicorp/go-secure-stdlib/pluginutil/v2` from 2.0.6 to 2.0.8
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.6...configutil/v2.0.8)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/hashicorp/go-version` from 1.6.0 to 1.7.0
- [Release notes](https://github.com/hashicorp/go-version/releases)
- [Changelog](https://github.com/hashicorp/go-version/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-version/compare/v1.6.0...v1.7.0)

Updates `github.com/hashicorp/hcl` from 1.0.1-vault-5 to 1.0.1-vault-7
- [Release notes](https://github.com/hashicorp/hcl/releases)
- [Changelog](https://github.com/hashicorp/hcl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/hcl/compare/v1.0.1-vault-5...v1.0.1-vault-7)

Updates `github.com/hashicorp/mql` from 0.1.3 to 0.1.5
- [Release notes](https://github.com/hashicorp/mql/releases)
- [Changelog](https://github.com/hashicorp/mql/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/mql/compare/v0.1.3...v0.1.5)

Updates `github.com/hashicorp/vault/api` from 1.12.0 to 1.16.0
- [Release notes](https://github.com/hashicorp/vault/releases)
- [Changelog](https://github.com/hashicorp/vault/blob/main/CHANGELOG-v1.10-v1.15.md)
- [Commits](https://github.com/hashicorp/vault/compare/v1.12.0...v1.16.0)

Updates `github.com/jackc/pgx/v5` from 5.6.0 to 5.7.5
- [Changelog](https://github.com/jackc/pgx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jackc/pgx/compare/v5.6.0...v5.7.5)

Updates `github.com/jimlambrt/gldap` from 0.1.10 to 0.1.14
- [Release notes](https://github.com/jimlambrt/gldap/releases)
- [Commits](https://github.com/jimlambrt/gldap/compare/v0.1.10...v0.1.14)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/miekg/dns` from 1.1.58 to 1.1.66
- [Changelog](https://github.com/miekg/dns/blob/master/Makefile.release)
- [Commits](https://github.com/miekg/dns/compare/v1.1.58...v1.1.66)

Updates `github.com/oligot/go-mod-upgrade` from 0.9.1 to 0.11.0
- [Release notes](https://github.com/oligot/go-mod-upgrade/releases)
- [Changelog](https://github.com/oligot/go-mod-upgrade/blob/main/.goreleaser.yml)
- [Commits](https://github.com/oligot/go-mod-upgrade/compare/v0.9.1...v0.11.0)

Updates `github.com/ory/dockertest/v3` from 3.10.0 to 3.12.0
- [Release notes](https://github.com/ory/dockertest/releases)
- [Commits](https://github.com/ory/dockertest/compare/v3.10.0...v3.12.0)

Updates `github.com/pires/go-proxyproto` from 0.7.0 to 0.8.1
- [Release notes](https://github.com/pires/go-proxyproto/releases)
- [Commits](https://github.com/pires/go-proxyproto/compare/v0.7.0...v0.8.1)

Updates `github.com/prometheus/client_golang` from 1.18.0 to 1.22.0
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.18.0...v1.22.0)

Updates `github.com/zalando/go-keyring` from 0.2.3 to 0.2.6
- [Release notes](https://github.com/zalando/go-keyring/releases)
- [Commits](https://github.com/zalando/go-keyring/compare/v0.2.3...v0.2.6)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/exp` from 0.0.0-20240205201215-2c58cdc269a3 to 0.0.0-20250408133849-7e4ce0ab07d0
- [Commits](https://github.com/golang/exp/commits)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sync` from 0.13.0 to 0.14.0
- [Commits](https://github.com/golang/sync/compare/v0.13.0...v0.14.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/term` from 0.31.0 to 0.32.0
- [Commits](https://github.com/golang/term/compare/v0.31.0...v0.32.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `golang.org/x/tools` from 0.21.1-0.20240508182429-e35e4ccd0d2d to 0.32.0
- [Release notes](https://github.com/golang/tools/releases)
- [Commits](https://github.com/golang/tools/commits/v0.32.0)

Updates `google.golang.org/genproto` from 0.0.0-20240205150955-31a09d347014 to 0.0.0-20240213162025-012b6fc9bca9
- [Commits](https://github.com/googleapis/go-genproto/commits)

Updates `google.golang.org/genproto/googleapis/api` from 0.0.0-20240205150955-31a09d347014 to 0.0.0-20250303144028-a0af3efb3deb
- [Commits](https://github.com/googleapis/go-genproto/commits)

Updates `google.golang.org/grpc` from 1.61.1 to 1.70.0
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/grpc/cmd/protoc-gen-go-grpc` from 1.3.0 to 1.5.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.3.0...v1.5.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `gorm.io/driver/postgres` from 1.5.9 to 1.5.11
- [Commits](https://github.com/go-gorm/postgres/compare/v1.5.9...v1.5.11)

Updates `mvdan.cc/gofumpt` from 0.5.0 to 0.8.0
- [Release notes](https://github.com/mvdan/gofumpt/releases)
- [Changelog](https://github.com/mvdan/gofumpt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mvdan/gofumpt/compare/v0.5.0...v0.8.0)

Updates `nhooyr.io/websocket` from 1.8.10 to 1.8.17
- [Release notes](https://github.com/nhooyr/websocket-old/releases)
- [Commits](https://github.com/nhooyr/websocket-old/commits/v1.8.17)

Updates `golang.org/x/time` from 0.5.0 to 0.11.0
- [Commits](https://github.com/golang/time/compare/v0.5.0...v0.11.0)

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/google/go-cmp` from 0.6.0 to 0.7.0
- [Release notes](https://github.com/google/go-cmp/releases)
- [Commits](https://github.com/google/go-cmp/compare/v0.6.0...v0.7.0)

Updates `github.com/hashicorp/eventlogger` from 0.2.6-0.20231025104552-802587e608f0 to 0.2.11
- [Commits](https://github.com/hashicorp/eventlogger/compare/v0.2.9...v0.2.11)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.8 to 0.1.9
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.5 to 1.0.6
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.9.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `google.golang.org/grpc` from 1.61.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `nhooyr.io/websocket` from 1.8.10 to 1.8.17
- [Release notes](https://github.com/nhooyr/websocket-old/releases)
- [Commits](https://github.com/nhooyr/websocket-old/commits/v1.8.17)

Updates `github.com/hashicorp/boundary/sdk` from 0.0.48 to 0.0.52
- [Release notes](https://github.com/hashicorp/boundary/releases)
- [Changelog](https://github.com/hashicorp/boundary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/boundary/compare/api/v0.0.48...api/v0.0.52)

Updates `golang.org/x/time` from 0.3.0 to 0.11.0
- [Commits](https://github.com/golang/time/compare/v0.5.0...v0.11.0)

Updates `github.com/hashicorp/eventlogger` from 0.2.10 to 0.2.11
- [Commits](https://github.com/hashicorp/eventlogger/compare/v0.2.9...v0.2.11)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/pluginutil/v2` from 2.0.7 to 2.0.8
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.6...configutil/v2.0.8)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.68.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/boundary/sdk` from 0.0.51 to 0.0.52
- [Release notes](https://github.com/hashicorp/boundary/releases)
- [Changelog](https://github.com/hashicorp/boundary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/boundary/compare/api/v0.0.48...api/v0.0.52)

Updates `github.com/fatih/color` from 1.16.0 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/eventlogger` from 0.2.6-0.20231025104552-802587e608f0 to 0.2.11
- [Commits](https://github.com/hashicorp/eventlogger/compare/v0.2.9...v0.2.11)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.9 to 0.2.0
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-secure-stdlib/pluginutil/v2` from 2.0.6 to 2.0.8
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.6...configutil/v2.0.8)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/hashicorp/go-version` from 1.3.0 to 1.7.0
- [Release notes](https://github.com/hashicorp/go-version/releases)
- [Changelog](https://github.com/hashicorp/go-version/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-version/compare/v1.6.0...v1.7.0)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.9.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sync` from 0.13.0 to 0.14.0
- [Commits](https://github.com/golang/sync/compare/v0.13.0...v0.14.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.59.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/boundary/sdk` from 0.0.39 to 0.0.52
- [Release notes](https://github.com/hashicorp/boundary/releases)
- [Changelog](https://github.com/hashicorp/boundary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/boundary/compare/api/v0.0.48...api/v0.0.52)

Updates `github.com/fatih/color` from 1.15.0 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/hashicorp/eventlogger` from 0.2.9 to 0.2.11
- [Commits](https://github.com/hashicorp/eventlogger/compare/v0.2.9...v0.2.11)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.9 to 0.2.0
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-secure-stdlib/pluginutil/v2` from 2.0.6 to 2.0.8
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.6...configutil/v2.0.8)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.9.0 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sync` from 0.13.0 to 0.14.0
- [Commits](https://github.com/golang/sync/compare/v0.13.0...v0.14.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.66.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/boundary/sdk` from 0.0.47 to 0.0.52
- [Release notes](https://github.com/hashicorp/boundary/releases)
- [Changelog](https://github.com/hashicorp/boundary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/boundary/compare/api/v0.0.48...api/v0.0.52)

Updates `golang.org/x/time` from 0.6.0 to 0.11.0
- [Commits](https://github.com/golang/time/compare/v0.5.0...v0.11.0)

Updates `github.com/fatih/color` from 1.15.0 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/eventlogger` from 0.2.6-0.20231025104552-802587e608f0 to 0.2.11
- [Commits](https://github.com/hashicorp/eventlogger/compare/v0.2.9...v0.2.11)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/pluginutil/v2` from 2.0.6 to 2.0.8
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.6...configutil/v2.0.8)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.9.0 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.61.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/boundary/sdk` from 0.0.51 to 0.0.52
- [Release notes](https://github.com/hashicorp/boundary/releases)
- [Changelog](https://github.com/hashicorp/boundary/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/boundary/compare/api/v0.0.48...api/v0.0.52)

Updates `github.com/fatih/color` from 1.14.1 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.9 to 0.2.0
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.59.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

Updates `github.com/hashicorp/go-kms-wrapping/wrappers/alicloudkms/v2` from 2.0.3 to 2.0.4
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.3...v2.0.4)

Updates `github.com/fatih/color` from 1.14.1 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.9 to 0.2.0
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.59.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

Updates `github.com/hashicorp/go-kms-wrapping/wrappers/awskms/v2` from 2.0.10 to 2.0.11
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.10...v2.0.11)

Updates `github.com/fatih/color` from 1.15.0 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.9 to 0.2.0
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.9.0 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.59.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

Updates `github.com/hashicorp/go-kms-wrapping/wrappers/azurekeyvault/v2` from 2.0.11 to 2.0.14
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.11...v2.0.14)

Updates `github.com/fatih/color` from 1.14.1 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.9 to 0.2.0
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sync` from 0.13.0 to 0.14.0
- [Commits](https://github.com/golang/sync/compare/v0.13.0...v0.14.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.59.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

Updates `github.com/hashicorp/go-kms-wrapping/wrappers/gcpckms/v2` from 2.0.12 to 2.0.13
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.12...v2.0.13)

Updates `github.com/fatih/color` from 1.14.1 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.9 to 0.2.0
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.59.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

Updates `github.com/hashicorp/go-kms-wrapping/wrappers/ocikms/v2` from 2.0.8 to 2.0.9
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.8...v2.0.9)

Updates `github.com/fatih/color` from 1.16.0 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.7 to 0.1.9
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.6 to 1.0.7
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/hashicorp/vault/api` from 1.10.0 to 1.16.0
- [Release notes](https://github.com/hashicorp/vault/releases)
- [Changelog](https://github.com/hashicorp/vault/blob/main/CHANGELOG-v1.10-v1.15.md)
- [Commits](https://github.com/hashicorp/vault/compare/v1.12.0...v1.16.0)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.10.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/grpc` from 1.59.0 to 1.72.1
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `golang.org/x/time` from 0.3.0 to 0.11.0
- [Commits](https://github.com/golang/time/compare/v0.5.0...v0.11.0)

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

Updates `github.com/hashicorp/go-kms-wrapping/wrappers/transit/v2` from 2.0.12 to 2.0.13
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.12...v2.0.13)

Updates `github.com/fatih/color` from 1.15.0 to 1.18.0
- [Release notes](https://github.com/fatih/color/releases)
- [Commits](https://github.com/fatih/color/compare/v1.17.0...v1.18.0)

Updates `github.com/golang/protobuf` from 1.5.3 to 1.5.4
- [Release notes](https://github.com/golang/protobuf/releases)
- [Commits](https://github.com/golang/protobuf/compare/v1.5.3...v1.5.4)

Updates `github.com/grpc-ecosystem/grpc-gateway/v2` from 2.19.1 to 2.26.3
- [Release notes](https://github.com/grpc-ecosystem/grpc-gateway/releases)
- [Changelog](https://github.com/grpc-ecosystem/grpc-gateway/blob/main/.goreleaser.yml)
- [Commits](https://github.com/grpc-ecosystem/grpc-gateway/compare/v2.19.1...v2.26.3)

Updates `github.com/hashicorp/eventlogger` from 0.2.6-0.20231025104552-802587e608f0 to 0.2.11
- [Commits](https://github.com/hashicorp/eventlogger/compare/v0.2.9...v0.2.11)

Updates `github.com/hashicorp/go-hclog` from 1.5.0 to 1.6.3
- [Release notes](https://github.com/hashicorp/go-hclog/releases)
- [Commits](https://github.com/hashicorp/go-hclog/compare/v1.5.0...v1.6.3)

Updates `github.com/hashicorp/go-kms-wrapping/v2` from 2.0.16 to 2.0.18
- [Commits](https://github.com/hashicorp/go-kms-wrapping/commits/v2.0.18)

Updates `github.com/hashicorp/go-secure-stdlib/configutil/v2` from 2.0.11 to 2.0.12
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.11...configutil/v2.0.12)

Updates `github.com/hashicorp/go-secure-stdlib/listenerutil` from 0.1.9 to 0.1.10
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...listenerutil/v0.1.10)

Updates `github.com/hashicorp/go-secure-stdlib/parseutil` from 0.1.8 to 0.1.9
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/parseutil/v0.1.9...awsutil/v0.2.0)

Updates `github.com/hashicorp/go-secure-stdlib/pluginutil/v2` from 2.0.6 to 2.0.8
- [Release notes](https://github.com/hashicorp/go-secure-stdlib/releases)
- [Commits](https://github.com/hashicorp/go-secure-stdlib/compare/configutil/v2.0.6...configutil/v2.0.8)

Updates `github.com/hashicorp/go-sockaddr` from 1.0.5 to 1.0.6
- [Release notes](https://github.com/hashicorp/go-sockaddr/releases)
- [Commits](https://github.com/hashicorp/go-sockaddr/compare/v1.0.6...v1.0.7)

Updates `github.com/mattn/go-colorable` from 0.1.13 to 0.1.14
- [Commits](https://github.com/mattn/go-colorable/compare/v0.1.13...v0.1.14)

Updates `github.com/stretchr/testify` from 1.8.4 to 1.9.0
- [Release notes](https://github.com/stretchr/testify/releases)
- [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0)

Updates `golang.org/x/crypto` from 0.37.0 to 0.38.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.38.0)

Updates `golang.org/x/net` from 0.39.0 to 0.40.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.40.0)

Updates `golang.org/x/sys` from 0.32.0 to 0.33.0
- [Commits](https://github.com/golang/sys/compare/v0.32.0...v0.33.0)

Updates `golang.org/x/text` from 0.24.0 to 0.25.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.24.0...v0.25.0)

Updates `google.golang.org/genproto/googleapis/api` from 0.0.0-20240125205218-1f4bbc51befe to 0.0.0-20250303144028-a0af3efb3deb
- [Commits](https://github.com/googleapis/go-genproto/commits)

Updates `google.golang.org/grpc` from 1.61.0 to 1.70.0
- [Release notes](https://github.com/grpc/grpc-go/releases)
- [Commits](https://github.com/grpc/grpc-go/compare/v1.61.0...v1.72.1)

Updates `google.golang.org/protobuf` from 1.36.1 to 1.36.5

Updates `nhooyr.io/websocket` from 1.8.10 to 1.8.17
- [Release notes](https://github.com/nhooyr/websocket-old/releases)
- [Commits](https://github.com/nhooyr/websocket-old/commits/v1.8.17)

Updates `github.com/hashicorp/go-kms-wrapping/plugin/v2` from 2.0.7 to 2.0.8
- [Commits](https://github.com/hashicorp/go-kms-wrapping/compare/v2.0.7...v2.0.8)

---
updated-dependencies:
- dependency-name: github.com/cenkalti/backoff/v4
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/creack/pty
  dependency-version: 1.1.24
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go
- dependency-name: github.com/docker/docker
  dependency-version: 28.1.1+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: go
- dependency-name: github.com/fatih/color
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/glebarez/sqlite
  dependency-version: 1.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/golang-migrate/migrate/v4
  dependency-version: 4.18.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/golang/protobuf
  dependency-version: 1.5.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: go
- dependency-name: github.com/google/go-cmp
  dependency-version: 0.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/grpc-ecosystem/grpc-gateway/v2
  dependency-version: 2.26.3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/hashicorp/cap
  dependency-version: 0.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: go
- dependency-name: github.com/hashicorp/eventlogger
  dependency-version: 0.2.11
  dependency-type: direct:production
  update-type: version-...

Signed-off-by: dependabot[bot] <support@github.com>

* mod: downgrade/upgrade some dependencies to fix build

* all: regenerate protobuf files

* internal: rerun gofumpt

* internal/cmd/config: fix test after change of behavior

* internal/daemon/controlller: explicitly disable gRPC Client DNS resolution

It seems that the gRPC client update caused it to dislike our empty connection
string. Explicitly pass through DNS resolution using the "passthrough" resolver.

* testing/e2e: update test type reference

Docker changed the type here apparently

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Johan Brandhorst-Satzkorn <johan.brandhorst@gmail.com>
2025-05-23 09:42:26 -07:00

1011 lines
36 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package server
import (
"context"
"database/sql"
stderrors "errors"
"fmt"
"strings"
"time"
"github.com/hashicorp/boundary/internal/daemon/controller/downstream"
"github.com/hashicorp/boundary/internal/db"
"github.com/hashicorp/boundary/internal/errors"
"github.com/hashicorp/boundary/internal/globals"
"github.com/hashicorp/boundary/internal/kms"
"github.com/hashicorp/boundary/internal/server/store"
"github.com/hashicorp/boundary/internal/target"
"github.com/hashicorp/boundary/internal/types/scope"
"github.com/hashicorp/go-bexpr"
"github.com/hashicorp/go-dbw"
"github.com/hashicorp/nodeenrollment"
"github.com/hashicorp/nodeenrollment/registration"
"github.com/hashicorp/nodeenrollment/types"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/structpb"
"google.golang.org/protobuf/types/known/timestamppb"
)
var (
ErrCannotUpdateKmsWorkerViaApi = stderrors.New("cannot update a kms worker's basic information via api")
FilterWorkersFn = filterWorkers
)
// StorageBucketFilterCredIdFn is a function that gets and returns a storage
// bucket's worker filter and credential id.
type StorageBucketFilterCredIdFn func(ctx context.Context, ce globals.ControllerExtension, sbId string) (filter string, credId string, err error)
// WorkerAddress contains a worker's public id and address.
type WorkerAddress struct {
PublicId string
Address string
}
// DeleteWorker will delete a worker from the repository.
func (r *Repository) DeleteWorker(ctx context.Context, publicId string, _ ...Option) (int, error) {
const op = "server.(Repository).DeleteWorker"
if publicId == "" {
return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "missing public id")
}
worker := allocWorker()
worker.Worker.PublicId = publicId
var rowsDeleted int
_, err := r.writer.DoTx(
ctx,
db.StdRetryCnt,
db.ExpBackoff{},
func(_ db.Reader, w db.Writer) error {
deleteWorker := worker.clone()
var err error
rowsDeleted, err = w.Delete(
ctx,
deleteWorker,
)
if err != nil {
return errors.Wrap(ctx, err, op)
}
if rowsDeleted > 1 {
// return err, which will result in a rollback of the delete
return errors.New(ctx, errors.MultipleRecords, op, "more than 1 resource would have been deleted")
}
return nil
},
)
if err != nil {
return db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("failed for %s", publicId)))
}
if rowsDeleted == 0 {
return db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("delete failed for worker with workerId: %s", publicId)))
}
return rowsDeleted, nil
}
func (r *Repository) LookupWorkerIdByKeyId(ctx context.Context, keyId string) (string, error) {
const op = "server.(Repository).LookupWorkerIdByKeyId"
switch {
case keyId == "":
return "", errors.New(ctx, errors.InvalidParameter, op, "keyId is empty")
}
// We're searching for a workerAuth record based on worker id
worker := allocWorkerAuth()
worker.WorkerKeyIdentifier = keyId
err := r.reader.LookupById(ctx, worker)
if err != nil {
if errors.IsNotFoundError(err) {
return "", nil
}
return "", errors.Wrap(ctx, err, op)
}
return worker.WorkerId, nil
}
// LookupWorker returns the worker for the provided publicId. This returns
// nil nil in the situation where no worker can be found with that public id.
func (r *Repository) LookupWorker(ctx context.Context, publicId string, _ ...Option) (*Worker, error) {
const op = "server.(Repository).LookupWorker"
switch {
case publicId == "":
return nil, errors.New(ctx, errors.InvalidParameter, op, "publicId is empty")
}
w, err := lookupWorker(ctx, r.reader, publicId)
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
if w == nil {
return nil, nil
}
w.RemoteStorageStates, err = r.ListWorkerStorageBucketCredentialState(ctx, w.GetPublicId())
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
return w, nil
}
// lookupWorker returns the worker for the provided id. This returns
// nil nil in the situation where no worker can be found with that public id.
func lookupWorker(ctx context.Context, reader db.Reader, id string) (*Worker, error) {
const op = "server.lookupWorker"
switch {
case id == "":
return nil, errors.New(ctx, errors.InvalidParameter, op, "id is empty")
}
rows, err := reader.Query(ctx, lookupWorkerQuery, []any{sql.Named("worker_id", id)})
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
defer rows.Close()
var worker *Worker
for rows.Next() {
if err := reader.ScanRows(ctx, rows, &worker); err != nil {
return nil, err
}
}
return worker, nil
}
// ListHcpbManagedWorkers lists all HCPb managed workers' ids and addresses.
func (r *Repository) ListHcpbManagedWorkers(ctx context.Context, liveness time.Duration) ([]WorkerAddress, error) {
const op = "server.(Repository).ListHcpbManagedWorkers"
if liveness <= 0 {
liveness = DefaultLiveness
}
liveness = liveness.Truncate(time.Second)
query := fmt.Sprintf(listHcpbManagedWorkersQuery, uint32(liveness.Seconds()))
rows, err := r.reader.Query(ctx, query, []any{})
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
defer rows.Close()
var ret []WorkerAddress
for rows.Next() {
var result WorkerAddress
err = r.reader.ScanRows(ctx, rows, &result)
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
ret = append(ret, result)
}
if err := rows.Err(); err != nil {
return nil, errors.Wrap(ctx, err, op)
}
return ret, nil
}
// ListWorkers will return a listing of Workers and honor the WithLimit option.
// Supported options: WithLimit
//
// If WithLimit < 0, then unlimited results are returned. If WithLimit == 0, then
// default limits are used for results.
//
// Please note the cost of calling ListWorkers, as the underlying query calculates a connection count
// for each worker by joining with the session connection table. Instead of using this function to get
// worker information, create a domain-specific function that only returns the information you need.
// The purpose of ListWorkers is to return a list of workers for the API.
func (r *Repository) ListWorkers(ctx context.Context, scopeIds []string, opt ...Option) ([]*Worker, error) {
const op = "server.(Repository).ListWorkers"
opts := GetOpts(opt...)
newOpts := []Option{}
// handle the WithLimit default for the repo
switch {
case opts.withLimit != 0:
newOpts = append(newOpts, WithLimit(opts.withLimit))
default:
newOpts = append(newOpts, WithLimit(r.defaultLimit))
}
return ListWorkers(ctx, r.reader, scopeIds, newOpts...)
}
// ListWorkers will return a listing of Workers and honor the WithLimit option.
// Supported options: WithLimit
//
// If WithLimit < 0, then unlimited results are returned. If WithLimit == 0, then
// default limits are used for results.
//
// Please note the cost of calling ListWorkers, as the underlying query calculates a connection count
// for each worker by joining with the session connection table. Instead of using this function to get
// worker information, create a domain-specific function that only returns the information you need.
// The purpose of ListWorkers is to return a list of workers for the API.
func ListWorkers(ctx context.Context, reader db.Reader, scopeIds []string, opt ...Option) ([]*Worker, error) {
const op = "server.ListWorkers"
switch {
case len(scopeIds) == 0:
return nil, errors.New(ctx, errors.InvalidParameter, op, "no scope ids set")
}
opts := GetOpts(opt...)
query := listWorkersQuery
var whereArgs []any
if len(scopeIds) > 0 {
query = fmt.Sprintf("%s where scope_id in (?)", query)
whereArgs = append(whereArgs, scopeIds)
}
limit := db.DefaultLimit
if opts.withLimit != 0 {
// non-zero signals an override of the default limit for the repo.
limit = opts.withLimit
}
if limit > 0 {
query = fmt.Sprintf("%s limit %d", query, limit)
}
var workers []*Worker
rows, err := reader.Query(ctx, query, whereArgs)
if err != nil {
return nil, errors.Wrap(ctx, err, op, errors.WithMsg("error searching for workers"))
}
defer rows.Close()
for rows.Next() {
var worker Worker
if err := reader.ScanRows(ctx, rows, &worker); err != nil {
return nil, err
}
workers = append(workers, &worker)
}
return workers, nil
}
// UpsertWorkerStatus will update the address and last status time for a worker.
// If the worker is a kms worker that hasn't been seen yet, it'll attempt to
// create a new one, but will return an error if another worker (kms or other)
// has the same name. This returns the Worker object with the changes applied.
// The WithPublicId, WithKeyId, and WithUpdateTags options are
// the only ones used. All others are ignored.
// Workers are intentionally not oplogged.
func (r *Repository) UpsertWorkerStatus(ctx context.Context, worker *Worker, opt ...Option) (string, error) {
const op = "server.(Repository).UpsertWorkerStatus"
opts := GetOpts(opt...)
switch {
case worker == nil:
return "", errors.New(ctx, errors.InvalidParameter, op, "worker is nil")
case worker.GetAddress() == "":
return "", errors.New(ctx, errors.InvalidParameter, op, "worker reported address is empty")
case worker.ScopeId == "":
return "", errors.New(ctx, errors.InvalidParameter, op, "scope id is empty")
case worker.PublicId != "":
return "", errors.New(ctx, errors.InvalidParameter, op, "worker id is not empty")
case worker.GetName() == "" && opts.withKeyId == "" && opts.withPublicId == "":
return "", errors.New(ctx, errors.InvalidParameter, op, "worker keyId, name and public are all empty; one is required")
case worker.OperationalState == "":
return "", errors.New(ctx, errors.InvalidParameter, op, "worker operational state is empty")
case worker.LocalStorageState == "":
return "", errors.New(ctx, errors.InvalidParameter, op, "worker local storage state is empty")
}
var workerId string
var err error
switch {
case opts.withPublicId != "":
workerId = opts.withPublicId
case opts.withKeyId != "":
workerId, err = r.LookupWorkerIdByKeyId(ctx, opts.withKeyId)
if err != nil || workerId == "" {
return "", errors.Wrap(ctx, err, op, errors.WithMsg("error finding worker by keyId"))
}
default:
// generating the worker id based off of the scope and name ensures
// that if 2 kms workers are making requests with the same name they
// are treated as the same worker. Allowing this only for kms workers
// also ensures that we maintain the unique name constraint between pki
// workers and kms workers.
workerId, err = NewWorkerIdFromScopeAndName(ctx, worker.GetScopeId(), worker.GetName())
if err != nil || workerId == "" {
return "", errors.Wrap(ctx, err, op, errors.WithMsg("error creating a worker id"))
}
}
_, err = r.writer.DoTx(
ctx,
db.StdRetryCnt,
db.ExpBackoff{},
func(reader db.Reader, w db.Writer) error {
workerClone := worker.clone()
workerClone.PublicId = workerId
switch {
case opts.withKeyId != "":
// This case goes first because a key ID being supplied should
// be a clear indicator that we are working with a PKI (or
// KMS-PKI) workerClone, and a lack of one a clear indication we
// are working with a KMS workerClone.
//
// Note: unlike in the below case, this purposefully leaves out
// "description" since we want description changes for (non
// KMS-PKI) PKI-based workers to come via API only. We can't
// really guard on this in the DB so we need to be sure to not
// include it here.
n, err := w.Update(ctx, workerClone, []string{"address", "ReleaseVersion", "OperationalState", "LocalStorageState"}, nil)
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to update status of pki worker"))
}
switch n {
case 0:
return errors.New(ctx, errors.RecordNotFound, op, fmt.Sprintf("failed to find worker with key id %q", opts.withKeyId))
case 1:
break
default:
return errors.New(ctx, errors.MultipleRecords, op, fmt.Sprintf("multiple records found when updating worker with id %q", workerClone.GetPublicId()))
}
case workerClone.GetName() != "":
workerClone.Type = KmsWorkerType.String()
workerCreateConflict := &db.OnConflict{
Target: db.Columns{"public_id"},
Action: append(db.SetColumns([]string{"address", "release_version", "operational_state", "local_storage_state"}),
db.SetColumnValues(map[string]any{"last_status_time": "now()"})...),
}
var withRowsAffected int64
err := w.Create(ctx, workerClone, db.WithOnConflict(workerCreateConflict), db.WithReturnRowsAffected(&withRowsAffected),
// The intent of this WithWhere option is to operate with the OnConflict such that the action
// taken by the OnConflict only applies if the conflict is on a row that is returned by this where
// statement, otherwise it should error out.
db.WithWhere("server_worker.type = 'kms'"))
if err == nil && workerClone.Description != worker.Description {
_, err = w.Update(ctx, workerClone, []string{"description"}, nil)
}
switch {
case err != nil:
return errors.Wrap(ctx, err, op, errors.WithMsg("error creating a worker"))
case withRowsAffected == 0:
return errors.New(ctx, errors.NotUnique, op, "error updating worker")
}
}
// If we've been told to update tags, we need to clean out old
// ones and add new ones. Within the current transaction, simply
// delete all config tags for the given worker, then add the new ones
// we've been sent.
if opts.withUpdateTags {
if err := setWorkerConfigTags(ctx, w, workerClone.GetPublicId(), workerClone.inputTags); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("error setting worker tags"))
}
}
return nil
},
)
if err != nil {
return "", err
}
return workerId, nil
}
// VerifyKnownWorkers checks that the passed worker IDs are found in the repository and returns
// the public IDs of the workers that are found.
func (r *Repository) VerifyKnownWorkers(ctx context.Context, ids []string) ([]string, error) {
const op = "server.(Repository).VerifyKnownWorkers"
if len(ids) == 0 {
return nil, nil
}
rows, err := r.reader.Query(ctx, verifyKnownWorkersQuery, []any{ids})
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
defer rows.Close()
type rowsResult struct {
PublicId string
}
var ret []string
for rows.Next() {
var result rowsResult
err = r.reader.ScanRows(ctx, rows, &result)
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
ret = append(ret, result.PublicId)
}
if err := rows.Err(); err != nil {
return nil, errors.Wrap(ctx, err, op)
}
return ret, nil
}
// setWorkerConfigTags removes all existing config tags from the same source and worker id
// and creates new ones based on the ones provided. This function should be
// called from inside a db transaction.
// Workers/worker tags are intentionally not oplogged.
func setWorkerConfigTags(ctx context.Context, w db.Writer, id string, tags []*Tag) error {
const op = "server.setWorkerConfigTags"
switch {
case id == "":
return errors.New(ctx, errors.InvalidParameter, op, "worker id is empty")
case isNil(w):
return errors.New(ctx, errors.InvalidParameter, op, "db.Writer is nil")
}
_, err := w.Exec(ctx, deleteConfigTagsByWorkerIdSql, []any{id})
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("couldn't delete existing tags for worker %q", id)))
}
// If tags were cleared out entirely, then we'll have nothing
// to do here, e.g., it will result in deletion of all tags.
// Otherwise, go through and stage each tuple for insertion
// below.
if len(tags) > 0 {
uTags := make([]*store.ConfigTag, 0, len(tags))
for _, v := range tags {
if v == nil {
return errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("found nil tag value for worker %s", id))
}
uTags = append(uTags, &store.ConfigTag{
WorkerId: id,
Key: v.Key,
Value: v.Value,
})
}
if err = w.CreateItems(ctx, uTags); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("error creating tags for worker %q", id)))
}
}
return nil
}
// setWorkerApiTags removes all existing API tags from the same source and worker id
// and creates new ones based on the ones provided. This function should be
// called from inside a db transaction.
// Workers/worker tags are intentionally not oplogged.
func setWorkerApiTags(ctx context.Context, w db.Writer, id string, tags []*Tag) error {
const op = "server.setWorkerApiTags"
switch {
case id == "":
return errors.New(ctx, errors.InvalidParameter, op, "worker id is empty")
case isNil(w):
return errors.New(ctx, errors.InvalidParameter, op, "db.Writer is nil")
}
_, err := w.Exec(ctx, deleteApiTagsByWorkerIdSql, []any{id})
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("couldn't delete existing tags for worker %q", id)))
}
// If tags were cleared out entirely, then we'll have nothing
// to do here, e.g., it will result in deletion of all tags.
// Otherwise, go through and stage each tuple for insertion
// below.
if len(tags) > 0 {
uTags := make([]*store.ApiTag, 0, len(tags))
for _, v := range tags {
if v == nil {
return errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("found nil tag value for worker %s", id))
}
uTags = append(uTags, &store.ApiTag{
WorkerId: id,
Key: v.Key,
Value: v.Value,
})
}
if err = w.CreateItems(ctx, uTags); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("error creating tags for worker %q", id)))
}
}
return nil
}
// UpdateWorker will update a worker in the repository and return the resulting
// worker. fieldMaskPaths provides field_mask.proto paths for fields that should
// be updated. Fields will be set to NULL if the field is a zero value and
// included in fieldMask. Name, Description, and Address are the only updatable
// fields, if no updatable fields are included in the fieldMaskPaths, then an
// error is returned. If any paths besides those listed above are included in
// the path then an error is returned. If the worker is a KMS worker (whether
// via the old registration method or pki-kms) name updates will be disallowed.
func (r *Repository) UpdateWorker(ctx context.Context, worker *Worker, version uint32, fieldMaskPaths []string, opt ...Option) (*Worker, int, error) {
const (
op = "server.(Repository).UpdateWorker"
nameField = "name"
descField = "description"
)
switch {
case worker == nil:
return nil, db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "worker is nil")
case worker.PublicId == "":
return nil, db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "missing public id")
case version == 0:
return nil, db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "version is zero")
}
for _, f := range fieldMaskPaths {
switch {
case strings.EqualFold(nameField, f):
case strings.EqualFold(descField, f):
default:
return nil, db.NoRowsAffected, errors.New(ctx, errors.InvalidFieldMask, op, fmt.Sprintf("invalid field mask: %s", f))
}
}
var dbMask, nullFields []string
dbMask, nullFields = dbw.BuildUpdatePaths(
map[string]any{
nameField: worker.Name,
descField: worker.Description,
},
fieldMaskPaths,
nil,
)
if len(dbMask) == 0 && len(nullFields) == 0 {
return nil, db.NoRowsAffected, errors.New(ctx, errors.EmptyFieldMask, op, "no fields to update")
}
var rowsUpdated int
var ret *Worker
var err error
_, err = r.writer.DoTx(
ctx,
db.StdRetryCnt,
db.ExpBackoff{},
func(reader db.Reader, w db.Writer) error {
// First we need to do a lookup so we can validate that this
// function is not being used for workers registered via KMS-PKI
// means
wLookup, err := lookupWorker(ctx, reader, worker.GetPublicId())
if err != nil {
return errors.Wrap(ctx, err, op)
}
if wLookup == nil {
return errors.New(ctx, errors.RecordNotFound, op, fmt.Sprintf("failed to find worker %q", worker.GetPublicId()))
}
// If it's a KMS-PKI worker we do not want to allow
// name/description/other updates via the API, it should only come
// in via the upsert mechanism via status updates. If the public ID
// is predictably generated in the KMS fashion, it's a KMS-PKI
// worker.
workerId, err := NewWorkerIdFromScopeAndName(ctx, wLookup.ScopeId, wLookup.Name)
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("error generating worker id in kms-pki name check case"))
}
if workerId == worker.PublicId {
return errors.Wrap(ctx, ErrCannotUpdateKmsWorkerViaApi, op, errors.WithCode(errors.InvalidParameter))
}
worker := worker.clone()
rowsUpdated, err = w.Update(ctx, worker, dbMask, nullFields, db.WithVersion(&version),
db.WithWhere("server_worker.type = 'pki'"))
if err != nil {
return errors.Wrap(ctx, err, op)
}
if worker.Type == KmsWorkerType.String() {
return errors.New(ctx, errors.InvalidParameter, op, "cannot update a KMS worker")
}
if rowsUpdated > 1 {
// return err, which will result in a rollback of the update
return errors.New(ctx, errors.MultipleRecords, op, "more than 1 resource would have been updated")
}
ret, err = lookupWorker(ctx, reader, worker.GetPublicId())
if err != nil {
return errors.Wrap(ctx, err, op)
}
ret.RemoteStorageStates, err = r.ListWorkerStorageBucketCredentialState(ctx, ret.GetPublicId(), WithReaderWriter(reader, w))
if err != nil {
return err
}
return nil
},
)
if err != nil {
if errors.IsUniqueError(err) {
return nil, db.NoRowsAffected, errors.New(ctx, errors.NotUnique, op, fmt.Sprintf("worker with name %q already exists", worker.Name))
}
return nil, db.NoRowsAffected, errors.Wrap(ctx, err, op, errors.WithMsg(fmt.Sprintf("for %s", worker.GetPublicId())))
}
return ret, rowsUpdated, nil
}
// CreateWorker will create a worker in the repository and return the written
// worker. Creating a worker is not intentionally oplogged. A worker's
// ReportedStatus and Tags are intentionally ignored when creating a worker (not
// included). Currently, a worker can only be created in the global scope
//
// Options supported:
// WithNewIdFunc (this option is likely only useful for tests),
// withLocalStorageState (this option is likely only useful for tests),
// WithFetchNodeCredentialsRequest,
// WithCreateControllerLedActivationToken. The latter two are mutually
// exclusive.
func (r *Repository) CreateWorker(ctx context.Context, worker *Worker, opt ...Option) (*Worker, error) {
const op = "server.(Repository).CreateWorker"
opts := GetOpts(opt...)
switch {
case worker == nil:
return nil, errors.New(ctx, errors.InvalidParameter, op, "missing worker")
case worker.PublicId != "":
return nil, errors.New(ctx, errors.InvalidParameter, op, "public id is not empty")
case worker.ScopeId == "":
return nil, errors.New(ctx, errors.InvalidParameter, op, "missing scope id")
case worker.ScopeId != scope.Global.String():
return nil, errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("scope id must be %q", scope.Global.String()))
case worker.Address != "":
return nil, errors.New(ctx, errors.InvalidParameter, op, "address is not empty")
case worker.LastStatusTime != nil:
return nil, errors.New(ctx, errors.InvalidParameter, op, "last status time is not nil")
case opts.WithFetchNodeCredentialsRequest != nil && opts.WithCreateControllerLedActivationToken:
return nil, errors.New(ctx, errors.InvalidParameter, op, "fetch node credentials request and controller led activation token option cannot both be set")
}
worker.OperationalState = UnknownOperationalState.String()
worker.LocalStorageState = UnknownLocalStorageState.String()
if opts.withLocalStorageState != "" {
validLocalStorageState := ValidLocalStorageState(opts.withLocalStorageState)
if !validLocalStorageState {
return nil, errors.New(ctx, errors.InvalidParameter, op, "invalid local storage state")
}
worker.LocalStorageState = opts.withLocalStorageState
}
var err error
if worker.PublicId, err = opts.withNewIdFunc(ctx); err != nil {
return nil, errors.Wrap(ctx, err, op, errors.WithMsg("unable to generate worker id"))
}
state, err := structpb.NewStruct(map[string]any{
"worker_id": worker.PublicId,
})
if err != nil {
return nil, errors.Wrap(ctx, err, op, errors.WithMsg("error generating state struct", err))
}
var workerAuthRepo *WorkerAuthRepositoryStorage
databaseWrapper, err := r.kms.GetWrapper(context.Background(), worker.ScopeId, kms.KeyPurposeDatabase)
if err != nil {
return nil, errors.Wrap(ctx, err, op, errors.WithMsg("unable to get database wrapper"))
}
var returnedWorker *Worker
if _, err := r.writer.DoTx(
ctx,
db.StdRetryCnt,
db.ExpBackoff{},
func(read db.Reader, w db.Writer) error {
returnedWorker = worker.clone()
returnedWorker.Type = PkiWorkerType.String()
if err := w.Create(
ctx,
returnedWorker,
); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to create worker"))
}
switch {
case opts.WithFetchNodeCredentialsRequest != nil:
workerAuthRepo, err = NewRepositoryStorage(ctx, read, w, r.kms)
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to create worker auth repository"))
}
nodeInfo, err := registration.AuthorizeNode(ctx, workerAuthRepo, opts.WithFetchNodeCredentialsRequest, nodeenrollment.WithSkipStorage(true))
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to authorize node"))
}
nodeInfo.State = state
if err := StoreNodeInformationTx(ctx, read, w, r.kms, worker.ScopeId, nodeInfo); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to store node information"))
}
case opts.WithCreateControllerLedActivationToken:
tokenId, activationToken, err := registration.CreateServerLedActivationToken(ctx, nil, &types.ServerLedRegistrationRequest{},
nodeenrollment.WithSkipStorage(true),
nodeenrollment.WithState(state))
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to create controller-led activation token"))
}
creationTime := timestamppb.Now()
creationTimeBytes, err := proto.Marshal(creationTime)
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to marshal timestamp for activation token"))
}
activationTokenEntry, err := newWorkerAuthServerLedActivationToken(ctx, worker.PublicId, tokenId, creationTimeBytes)
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to create in-memory activation token"))
}
if err := activationTokenEntry.encrypt(ctx, databaseWrapper); err != nil {
return errors.Wrap(ctx, err, op)
}
if err := w.Create(
ctx,
activationTokenEntry,
); err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to create worker activation token in storage"))
}
returnedWorker.ControllerGeneratedActivationToken = activationToken
}
return nil
},
); err != nil {
return nil, errors.Wrap(ctx, err, op)
}
return returnedWorker, nil
}
// AddWorkerTags adds specified api tags to the repo worker and returns its new tags.
// No options are currently supported.
func (r *Repository) AddWorkerTags(ctx context.Context, workerId string, workerVersion uint32, tags []*Tag, _ ...Option) (Tags, error) {
const op = "server.(Repository).AddWorkerTags"
switch {
case workerId == "":
return nil, errors.New(ctx, errors.InvalidParameter, op, "worker public id is empty")
case workerVersion == 0:
return nil, errors.New(ctx, errors.InvalidParameter, op, "missing version")
case len(tags) == 0:
return nil, errors.New(ctx, errors.InvalidParameter, op, "no tags provided")
}
worker, err := lookupWorker(ctx, r.reader, workerId)
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
if worker == nil {
return nil, errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("no worker found with public id %s", workerId))
}
newTags := make(Tags)
for _, tag := range tags {
newTags[tag.Key] = append(newTags[tag.Key], tag.Value)
}
for k, v := range worker.ApiTags {
newTags[k] = append(newTags[k], v...)
}
_, err = r.writer.DoTx(ctx, db.StdRetryCnt, db.ExpBackoff{}, func(reader db.Reader, w db.Writer) error {
worker := worker.clone()
worker.PublicId = workerId
worker.Version = workerVersion + 1
rowsUpdated, err := w.Update(ctx, worker, []string{"Version"}, nil, db.WithVersion(&workerVersion))
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to update worker version"))
}
if rowsUpdated != 1 {
return errors.New(ctx, errors.MultipleRecords, op, fmt.Sprintf("updated worker version and %d rows updated", rowsUpdated))
}
err = setWorkerApiTags(ctx, w, workerId, newTags.convertToTag())
if err != nil {
return errors.Wrap(ctx, err, op)
}
return nil
})
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
return newTags, nil
}
// SetWorkerTags clears the current repo worker's api tags and sets them from the input parameters.
// Returns the current repo worker tags. No options are currently supported.
func (r *Repository) SetWorkerTags(ctx context.Context, workerId string, workerVersion uint32, tags []*Tag, _ ...Option) ([]*Tag, error) {
const op = "server.(Repository).SetWorkerTags"
switch {
case workerId == "":
return nil, errors.New(ctx, errors.InvalidParameter, op, "worker public id is empty")
case workerVersion == 0:
return nil, errors.New(ctx, errors.InvalidParameter, op, "missing version")
}
worker, err := lookupWorker(ctx, r.reader, workerId)
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
if worker == nil {
return nil, errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("no worker found with public id %s", workerId))
}
_, err = r.writer.DoTx(ctx, db.StdRetryCnt, db.ExpBackoff{}, func(reader db.Reader, w db.Writer) error {
worker := worker.clone()
worker.PublicId = workerId
worker.Version = workerVersion + 1
rowsUpdated, err := w.Update(ctx, worker, []string{"Version"}, nil, db.WithVersion(&workerVersion))
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to update worker version"))
}
if rowsUpdated != 1 {
return errors.New(ctx, errors.MultipleRecords, op, fmt.Sprintf("updated worker version and %d rows updated", rowsUpdated))
}
err = setWorkerApiTags(ctx, w, workerId, tags)
if err != nil {
return errors.Wrap(ctx, err, op)
}
return nil
})
if err != nil {
return nil, errors.Wrap(ctx, err, op)
}
return tags, nil
}
// DeleteWorkerTags deletes specified api worker tags from the repo. Returns the number of rows deleted.
// No options are currently supported.
func (r *Repository) DeleteWorkerTags(ctx context.Context, workerId string, workerVersion uint32, tags []*Tag, _ ...Option) (int, error) {
const op = "server.(Repository).DeleteWorkerTags"
switch {
case workerId == "":
return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "worker public id is empty")
case workerVersion == 0:
return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "missing version")
case len(tags) == 0:
return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "no tags provided")
}
worker, err := lookupWorker(ctx, r.reader, workerId)
if err != nil {
return db.NoRowsAffected, errors.Wrap(ctx, err, op)
}
if worker == nil {
return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, fmt.Sprintf("no worker found with public id %s", workerId))
}
rowsDeleted := 0
deleteTags := make([]*store.ApiTag, 0, len(tags))
for _, t := range tags {
if t == nil {
return db.NoRowsAffected, errors.New(ctx, errors.InvalidParameter, op, "found nil tag value in input")
}
deleteTags = append(deleteTags, &store.ApiTag{
WorkerId: workerId,
Key: t.Key,
Value: t.Value,
})
}
_, err = r.writer.DoTx(ctx, db.StdRetryCnt, db.ExpBackoff{}, func(reader db.Reader, w db.Writer) error {
worker := worker.clone()
worker.PublicId = workerId
worker.Version = workerVersion + 1
rowsUpdated, err := w.Update(ctx, worker, []string{"Version"}, nil, db.WithVersion(&workerVersion))
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to update worker version"))
}
if rowsUpdated != 1 {
return errors.New(ctx, errors.MultipleRecords, op, fmt.Sprintf("updated worker version and %d rows updated", rowsUpdated))
}
rowsDeleted, err = w.DeleteItems(ctx, deleteTags)
if err != nil {
return errors.Wrap(ctx, err, op, errors.WithMsg("unable to delete worker tags"))
}
if rowsDeleted != len(deleteTags) {
return errors.New(ctx, errors.MultipleRecords, op,
fmt.Sprintf("unable to delete specified tag: tags deleted %d did not match request for %d", rowsDeleted, len(tags)))
}
return nil
})
if err != nil {
return db.NoRowsAffected, errors.Wrap(ctx, err, op)
}
return rowsDeleted, nil
}
// SelectSessionWorkers attempts to select suitable workers for a given session.
// Additionally, it returns the data for the the protocol-aware worker that can
// handle recording operations, if enabled.
func (r *Repository) SelectSessionWorkers(ctx context.Context,
workerRPCGracePeriod time.Duration,
t target.Target,
host string,
ce globals.ControllerExtension,
sbFn StorageBucketFilterCredIdFn,
ds downstream.Graph,
) ([]WorkerAddress, string, error) {
const op = "server.(Repository).SelectSessionWorkers"
if workerRPCGracePeriod <= 0 {
workerRPCGracePeriod = DefaultLiveness
}
workerRPCGracePeriod = workerRPCGracePeriod.Truncate(time.Second)
query := fmt.Sprintf(listSelectSessionWorkers, uint32(workerRPCGracePeriod.Seconds()))
var livingWorkers []*Worker
_, err := r.writer.DoTx(
ctx,
db.StdRetryCnt,
db.ExpBackoff{},
func(reader db.Reader, w db.Writer) error {
rows, err := reader.Query(ctx, query, []any{})
if err != nil {
return err
}
defer rows.Close()
for rows.Next() {
// Note: The Worker objects scanned here do not contain all data
// a Worker object can hold, only a subset. Check the query to
// learn exactly what fields are present.
var worker Worker
if err := reader.ScanRows(ctx, rows, &worker); err != nil {
return err
}
livingWorkers = append(livingWorkers, &worker)
}
return nil
},
)
if err != nil {
return nil, "", errors.Wrap(ctx, err, op, errors.WithMsg("error searching for workers"))
}
if len(livingWorkers) == 0 {
return nil, "", errors.New(ctx, errors.WorkerNotFoundForRequest, op, "No workers are available to handle this session.")
}
wl, protoWorker, err := FilterWorkersFn(ctx, r, t, livingWorkers, host, ce, sbFn, ds)
if err != nil {
return nil, "", errors.Wrap(ctx, err, op)
}
was := make([]WorkerAddress, 0, len(wl))
for _, w := range wl {
was = append(was, WorkerAddress{PublicId: w.GetPublicId(), Address: w.GetAddress()})
}
if protoWorker != nil {
return was, protoWorker.GetPublicId(), nil
}
return was, "", nil
}
// If set, use the worker_filter or egress_worker_filter to filter the selected workers
// and ensure we have workers available to service this request. The second return
// argument is always nil.
func filterWorkers(
ctx context.Context,
_ *Repository,
t target.Target,
selectedWorkers WorkerList,
_ string,
_ globals.ControllerExtension,
_ StorageBucketFilterCredIdFn,
_ downstream.Graph,
_ ...target.Option,
) (WorkerList, *Worker, error) {
const op = "server.filterWorkers"
if len(selectedWorkers) > 0 {
var eval *bexpr.Evaluator
var err error
switch {
case len(t.GetEgressWorkerFilter()) > 0:
eval, err = bexpr.CreateEvaluator(t.GetEgressWorkerFilter())
case len(t.GetWorkerFilter()) > 0:
eval, err = bexpr.CreateEvaluator(t.GetWorkerFilter())
default: // No filter
return selectedWorkers, nil, nil
}
if err != nil {
return nil, nil, err
}
selectedWorkers, err = selectedWorkers.Filtered(eval)
if err != nil {
return nil, nil, err
}
}
if len(selectedWorkers) == 0 {
return nil, nil, errors.New(ctx, errors.WorkerNotFoundForRequest, op, "No workers are available to handle this session, or all have been filtered.")
}
return selectedWorkers, nil, nil
}