Skip to content

release(provider): Terraform Provider v1.4.0 - #90

Open
stas-schaller wants to merge 14 commits into
masterfrom
release-v1.4.0
Open

release(provider): Terraform Provider v1.4.0#90
stas-schaller wants to merge 14 commits into
masterfrom
release-v1.4.0

Conversation

@stas-schaller

@stas-schaller stas-schaller commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Release branch for v1.4.0: adds a metadata data source, exposes parent_uid as an input on the folder data source, fixes special=0 being silently ignored during password generation, adds special_set to the complexity block, and clarifies that complexity counts are minimums.

Changes

New Features

  • secretsmanager_metadata data source (KSM-970): returns non-sensitive record metadata only — uid, type, title, notes, revision, folder_uid, is_editable. Look up a record by UID, or by title with path = "*". Primary use case: pair with an ephemeral resource to drive write-only attribute versioning on other providers (Azure Key Vault, Kubernetes). When the Keeper record rotates, revision increments, and the companion value_wo_version/data_wo_revision changes on the next plan, triggering Terraform to re-apply the write-only value. Nothing sensitive lands in state.
  • parent_uid input on secretsmanager_folder (KSM-1016): parent_uid was previously Computed-only (read back after lookup, but not usable as input). Making it Optional+Computed lets users scope folder lookups to a specific parent, disambiguating folders with identical names under different parents (e.g. test/db, stage/db, prod/db). No logic changes — findFolder() already filtered by parent; only the schema declaration needed updating.
  • special_set in complexity block (KSM-990): adds an optional special_set string attribute to the complexity block on all password-bearing resources. Constrains which special characters the SDK draws from during generation. Empty string (default) preserves the existing SDK default set ("!@#$%()+;<>=?[]{}^.,), which begins with a double-quote.

Bug Fixes

  • special=0 ignored during generation (KSM-989): when length exceeded the sum of category counts, the SDK's extra-character fallback included specials even when special=0. Fixed by using d.GetRawConfig() to distinguish an explicitly-set zero from an absent field, so unset counts pass "" (let the SDK decide) while special=0 correctly passes "0" (no specials).
  • Complexity counts clarified as minimums (KSM-1071): caps, lowercase, digits, and special in the complexity block set minimum character counts, not exact targets. The generator may produce more of each character class to satisfy the total length. Schema descriptions now match the Go SDK, Ruby SDK, and Commander docs, which have always used "minimum" language for these fields.

Internal

  • CI test gate now runs (KSM-1028): the test.yml build/vet/gofmt/unit gate had never run on a PR — it filtered on a non-existent main branch while the repo uses master and release-*. It now triggers on master and release-**. This change accounts for the bulk of the diff: a one-time repo-wide gofmt -s pass (the tree had drifted while the gate was dormant) and a t.Fatalt.Skip hardening of the ephemeral acceptance tests so they skip cleanly without credentials. No change to provider behavior. PAM ephemeral test data coverage is tracked separately in KSM-1039.

Breaking Changes

None.

Related Issues

Add v1.4.0 CHANGELOG section (KSM-989, KSM-990) and bump provider
version constraint from >= 1.3.0 to >= 1.4.0 across README, docs,
and all examples.
@datadog-keeper-security

This comment has been minimized.

@mgallego-keeper mgallego-keeper left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

went through the v1.4.0 changes, mostly looks good to me. couple small things below, and i left two inline comments on the code too. nothing blocking, mostly docs/nits, lmk if i'm missing context.

  • couldn't find docs or an example for the new secretsmanager_metadata data source (no docs/data-sources/metadata.md, nothing in examples/data-sources/). the other data sources all have both, and i think the registry page builds from the docs/ folder, so this one might come out empty once it's published. also noticed docs/data-sources/folder.md still lists parent_uid under "Read-Only", but this PR makes it an input now, so that one looks out of date too.
  • tiny one on special_set: the description says the default set is !@#$%()+;<>=?[]{}^.,, but the SDK's AsciiSpecialCharacters actually starts with a " as well. probably worth adding it so people know a double quote can show up in a generated password by default.

Comment thread secretsmanager/data_source_metadata.go Outdated
Comment thread secretsmanager/resource_login_test.go Outdated

@mgallego-keeper mgallego-keeper left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the quick turnaround on these! went back through it all and it looks good to me.

the title lookup is a nicer fix than just tweaking the description, and the metadata docs + example read well. also nice catch on the test workflow not actually running before (the main vs master thing), good to see it green now.

one tiny optional thing, definitely not blocking: in data_source_metadata.go the d.SetId(path) means the data source id comes out as literally "*" on a title lookup. the uid attribute is still correct so it doesn't really matter in practice, and secretsmanager_record already does the same thing, so feel free to leave it. could switch both to secret.Uid down the line if we ever care.

approving 👍

@socket-security

socket-security Bot commented Jul 10, 2026

Copy link
Copy Markdown

Warning

Review the following alerts detected in dependencies.

According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Warn High
Obfuscated code: golang golang.org/x/tools is 90.0% likely obfuscated

Confidence: 0.90

Location: Package overview

From: ?golang/github.com/hashicorp/terraform-plugin-go@v0.30.0golang/github.com/hashicorp/terraform-plugin-mux@v0.22.0golang/golang.org/x/crypto@v0.54.0golang/github.com/hashicorp/go-cty@v1.5.0golang/github.com/hashicorp/terraform-plugin-sdk/v2@v2.37.0golang/golang.org/x/tools@v0.47.0

ℹ Read more on: This package | This alert | What is obfuscated code?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support@socket.dev.

Suggestion: Packages should not obfuscate their code. Consider not using packages with obfuscated code.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore golang/golang.org/x/tools@v0.47.0. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

The secretsmanager_metadata data source advertised UID-or-title lookup
but only ever queried by UID. Add an optional title input wired through
getRecord so the path="*" + title convention works, matching the login
and record data sources. Add the Registry docs page and example, which
were missing, and correct the acceptance test to exercise title lookup.
parent_uid became an optional input but the docs still listed it under
Read-Only. Move it to the optional inputs and align the schema
description wording.
The SDK default special-character set begins with a double-quote
("!@#$%()+;<>=?[]{}^.,), which the special_set descriptions and the
acceptance-test constants omitted. A user replicating the documented
set would silently drop the double-quote from generated passwords.
Also gofmt the password-generation tests (KSM-989).
The shipped secretsmanager_metadata data source supports lookup by
record UID or by title (path="*"); reflect that in the changelog entry.
…open Dependabot alerts

Bumps x/crypto 0.46.0 -> 0.54.0 and x/net 0.48.0 -> 0.57.0, resolving all
14 open Dependabot alerts (13 crypto, 1 net) ahead of the v1.4.0 release.
Clears stdlib@go1.26.2 CVEs flagged in the Manifest SBOM scan. Updates
the go directive in go.mod and the go-version pins in both CI workflows
to match.
@socket-security

socket-security Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedgolang.org/​x/​crypto@​v0.46.0 ⏵ v0.54.074 +1100 +75100100100

View full report

Add a boolean publish input (default true) to the release workflow.
When unchecked, only the SBOM job runs — check-tag and tag-and-release
are skipped — enabling vulnerability scan runs without creating a tag
or blocking on prod environment approval.
Clears GHSA-hrxh-6v49-42gf (High 8.8) — xDS RBAC and HTTP/2
vulnerabilities in grpc-go, fixed in v1.82.1. Also upgrades
google.golang.org/genproto/googleapis/rpc as a co-dependency.

govulncheck ./... confirms 0 reachable vulnerability call paths.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow to use data.secretsmanager_folder with given folder_uid FR: secretsmanager_metadata data resource.

3 participants