Skip to content

Commit 89f7f6b

Browse files
authored
expose gcp kms retry and timeout options (#2132)
Signed-off-by: Bob Callaway <[email protected]>
1 parent 8160bb5 commit 89f7f6b

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

cmd/app/serve.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import (
4242
grpcmw "github.com/grpc-ecosystem/go-grpc-middleware"
4343
grpc_zap "github.com/grpc-ecosystem/go-grpc-middleware/logging/zap"
4444
grpc_recovery "github.com/grpc-ecosystem/go-grpc-middleware/recovery"
45+
grpc_retry "github.com/grpc-ecosystem/go-grpc-middleware/retry"
4546
grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
4647
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
4748
"github.com/prometheus/client_golang/prometheus"
@@ -60,11 +61,13 @@ import (
6061
"github.com/sigstore/fulcio/pkg/log"
6162
"github.com/sigstore/fulcio/pkg/server"
6263
"github.com/sigstore/sigstore/pkg/cryptoutils"
64+
"github.com/sigstore/sigstore/pkg/signature/kms/gcp"
6365
"github.com/spf13/cobra"
6466
"github.com/spf13/pflag"
6567
"github.com/spf13/viper"
6668
"go.uber.org/zap"
6769
"goa.design/goa/v3/grpc/middleware"
70+
"google.golang.org/api/option"
6871
"google.golang.org/grpc"
6972
"google.golang.org/grpc/credentials/insecure"
7073
health "google.golang.org/grpc/health/grpc_health_v1"
@@ -103,6 +106,8 @@ func newServeCmd() *cobra.Command {
103106
cmd.Flags().Bool("fileca-watch", true, "Watch filesystem for updates")
104107
cmd.Flags().String("kms-resource", "", "KMS key resource path. Must be prefixed with awskms://, azurekms://, gcpkms://, or hashivault://")
105108
cmd.Flags().String("kms-cert-chain-path", "", "Path to PEM-encoded CA certificate chain for KMS-backed CA")
109+
cmd.Flags().Uint("gcp-kms-retries", 0, "Number of retries for GCP KMS requests")
110+
cmd.Flags().Uint("gcp-kms-timeout", 0, "sets the RPC timeout per call for GCP KMS requests in seconds, defaults to 0 (no timeout)")
106111
cmd.Flags().String("tink-kms-resource", "", "KMS key resource path for encrypted Tink keyset. Must be prefixed with gcp-kms:// or aws-kms://")
107112
cmd.Flags().String("tink-cert-chain-path", "", "Path to PEM-encoded CA certificate chain for Tink-backed CA")
108113
cmd.Flags().String("tink-keyset-path", "", "Path to KMS-encrypted keyset for Tink-backed CA")
@@ -287,7 +292,10 @@ func runServeCmd(cmd *cobra.Command, args []string) { //nolint: revive
287292
if err != nil {
288293
log.Logger.Fatalf("error loading the PEM certificates from the kms certificate chain from '%s': %v", viper.GetString("kms-cert-chain-path"), err)
289294
}
290-
baseca, err = kmsca.NewKMSCA(cmd.Context(), viper.GetString("kms-resource"), certs)
295+
opts := make([]signature.RPCOption, 0)
296+
callOpts := []grpc_retry.CallOption{grpc_retry.WithMax(viper.GetUint("gcp-kms-retries")), grpc_retry.WithPerRetryTimeout(time.Duration(viper.GetUint("gcp-kms-timeout")) * time.Second)}
297+
opts = append(opts, gcp.WithGoogleAPIClientOption(option.WithGRPCDialOption(grpc.WithUnaryInterceptor(grpc_retry.UnaryClientInterceptor(callOpts...)))))
298+
baseca, err = kmsca.NewKMSCA(cmd.Context(), viper.GetString("kms-resource"), certs, opts...)
291299
case "tinkca":
292300
baseca, err = tinkca.NewTinkCA(cmd.Context(),
293301
viper.GetString("tink-kms-resource"), viper.GetString("tink-keyset-path"), viper.GetString("tink-cert-chain-path"))

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ require (
2424
github.com/prometheus/common v0.65.0
2525
github.com/rs/cors v1.11.1
2626
github.com/sigstore/protobuf-specs v0.5.0
27-
github.com/sigstore/sigstore v1.9.5
27+
github.com/sigstore/sigstore v1.9.6-0.20250729224751-181c5d3339b3
2828
github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.5
2929
github.com/sigstore/sigstore/pkg/signature/kms/azure v1.9.5
30-
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.5
30+
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.6-0.20250729224751-181c5d3339b3
3131
github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.5
3232
github.com/spf13/cobra v1.9.1
3333
github.com/spf13/pflag v1.0.7
@@ -114,7 +114,7 @@ require (
114114
github.com/hashicorp/vault/api v1.16.0 // indirect
115115
github.com/huandu/xstrings v1.5.0 // indirect
116116
github.com/inconshreveable/mousetrap v1.1.0 // indirect
117-
github.com/jellydator/ttlcache/v3 v3.3.0 // indirect
117+
github.com/jellydator/ttlcache/v3 v3.4.0 // indirect
118118
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 // indirect
119119
github.com/kylelemons/godebug v1.1.0 // indirect
120120
github.com/letsencrypt/boulder v0.0.0-20240620165639-de9c06129bec // indirect

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@ github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI
208208
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
209209
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
210210
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
211-
github.com/jellydator/ttlcache/v3 v3.3.0 h1:BdoC9cE81qXfrxeb9eoJi9dWrdhSuwXMAnHTbnBm4Wc=
212-
github.com/jellydator/ttlcache/v3 v3.3.0/go.mod h1:bj2/e0l4jRnQdrnSTaGTsh4GSXvMjQcy41i7th0GVGw=
211+
github.com/jellydator/ttlcache/v3 v3.4.0 h1:YS4P125qQS0tNhtL6aeYkheEaB/m8HCqdMMP4mnWdTY=
212+
github.com/jellydator/ttlcache/v3 v3.4.0/go.mod h1:Hw9EgjymziQD3yGsQdf1FqFdpp7YjFMd4Srg5EJlgD4=
213213
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY=
214214
github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
215215
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
@@ -307,14 +307,14 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp
307307
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
308308
github.com/sigstore/protobuf-specs v0.5.0 h1:F8YTI65xOHw70NrvPwJ5PhAzsvTnuJMGLkA4FIkofAY=
309309
github.com/sigstore/protobuf-specs v0.5.0/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc=
310-
github.com/sigstore/sigstore v1.9.5 h1:Wm1LT9yF4LhQdEMy5A2JeGRHTrAWGjT3ubE5JUSrGVU=
311-
github.com/sigstore/sigstore v1.9.5/go.mod h1:VtxgvGqCmEZN9X2zhFSOkfXxvKUjpy8RpUW39oCtoII=
310+
github.com/sigstore/sigstore v1.9.6-0.20250729224751-181c5d3339b3 h1:IEhSeWfhTd0kaBpHUXniWU2Tl5K5OUACN69mi1WGd+8=
311+
github.com/sigstore/sigstore v1.9.6-0.20250729224751-181c5d3339b3/go.mod h1:JuqyPRJYnkNl6OTnQiG503EUnKih4P5EV6FUw+1B0iA=
312312
github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.5 h1:qp2VFyKuFQvTGmZwk5Q7m5nE4NwnF9tHwkyz0gtWAck=
313313
github.com/sigstore/sigstore/pkg/signature/kms/aws v1.9.5/go.mod h1:DKlQjjr+GsWljEYPycI0Sf8URLCk4EbGA9qYjF47j4g=
314314
github.com/sigstore/sigstore/pkg/signature/kms/azure v1.9.5 h1:CRZcdYn5AOptStsLRAAACudAVmb1qUbhMlzrvm7ju3o=
315315
github.com/sigstore/sigstore/pkg/signature/kms/azure v1.9.5/go.mod h1:b9rFfITq2fp1M3oJmq6lFFhSrAz5vOEJH1qzbMsZWN4=
316-
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.5 h1:7U0GsO0UGG1PdtgS6wBkRC0sMgq7BRVaFlPRwN4m1Qg=
317-
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.5/go.mod h1:/2qrI0nnCy/DTIPOMFaZlFnNPWEn5UeS70P37XEM88o=
316+
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.6-0.20250729224751-181c5d3339b3 h1:a7Yz8C0aBa/LjeiTa9ZLYi9B74GNhFRnUIUdvN6ddVk=
317+
github.com/sigstore/sigstore/pkg/signature/kms/gcp v1.9.6-0.20250729224751-181c5d3339b3/go.mod h1:tRtJzSZ48MXJV9bmS8pkb3mP36PCad/Cs+BmVJ3Z4O4=
318318
github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.5 h1:S2ukEfN1orLKw2wEQIUHDDlzk0YcylhcheeZ5TGk8LI=
319319
github.com/sigstore/sigstore/pkg/signature/kms/hashivault v1.9.5/go.mod h1:m7sQxVJmDa+rsmS1m6biQxaLX83pzNS7ThUEyjOqkCU=
320320
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=

0 commit comments

Comments
 (0)