Skip to main content
On this page

Coverage by target cloud

How the backends compare

Each row compares a capability of Secrets Manager with its adaptation on each backend. A dash means this row is not stated for that backend.

Max adaptation

On Google Cloud

Requests, versions, and deletion

Your application keeps sending AWS Secrets Manager requests, now to the Tensor9 adapter in the customer environment. The adapter keeps a saved record of each secret: its values, version IDs, stage labels, tags and lifecycle settings. Reads come from that record, not from whichever version happens to be newest in the storage service. PutSecretValue creates a version that never changes. AWSCURRENT, AWSPENDING, AWSPREVIOUS and custom labels each point at a version, and moving a label changes which value a read returns. Repeating a request with the same client request token and the same value returns the earlier result; reusing the token with a different value is rejected. Scheduled deletion blocks reads for a recovery window of 7 to 30 days, 30 by default. RestoreSecret cancels the deletion before the window ends. Force deletion removes the secret from the API at once; removing any copy in the storage service finishes separately.
Your application's Secrets Manager requests read and write the adapter's saved secret record. A background process copies the current value to Google Secret Manager.Your application's Secrets Manager requests read and write the adapter's saved secret record. A background process copies the current value to Google Secret Manager.

AWS version history stays in the record; the storage service holds a copy of the current value.

Rotation and access policies

The adapter runs the four rotation steps: create a new candidate secret, set it at its source, test it, and make it current. Your rotation function does the credential-specific work. The deployment must connect that function through the Lambda adapter; a rotation request is rejected when the configured function cannot be reached. Cancelling a rotation stops the run but leaves the AWSPENDING label in place for you to resolve. The resource-policy operations store, return, delete and validate the AWS policy document. Validation checks the syntax, public access, and policies that would lock every caller out of managing the policy. Storing a policy is not the same as enforcing all of it; see Limitations.

Storage, encryption, and replication

Google Secret Manager stores the current value under the deployment’s Google identity. Its numbered versions are backend revisions, not the source of AWS stage selection. Google replication and encryption settings govern that provider copy. The adapter’s record keeps all versions and labels. A background process copies the current value and its revision to Google Secret Manager and keeps it up to date. Editing that copy directly does not update the AWS version history, and the edit can be overwritten. Protect and back up the adapter’s state as well as Google Secret Manager. Encryption follows the deployment’s storage and key configuration. The adapter keeps KmsKeyId as metadata only. Protect the adapter’s saved state, and configure any copy in the storage service to meet the workload’s encryption-key requirements. Replication requests keep the region settings in the secret record. They do not create a second copy or disaster recovery in another region by themselves; see Limitations. Google’s native replication policy is chosen when its secret is created. AWS stage moves and delayed deletion are handled in the adapter’s record, so they do not require corresponding Google aliases or a native secret recovery window.

Limitations

Where this differs from AWS Secrets Manager
  • Resource policies behave differently: they are stored and validated, not fully enforced. The endpoint authorizes the calling principal, and access to the storage service uses the deployment’s cloud identity. Review effective permissions when a resource policy grants cross-account access or restricts more than the principal’s own permissions.
  • Regional replicas are not supported. Replication requests keep region settings only. You must configure and verify geographic replication of the underlying storage yourself. Only primary secrets are kept, and StopReplicationToReplica does not promote an independent regional replica.
  • KmsKeyId does not choose the encryption key. It is kept as metadata. Encryption comes from the deployment’s storage and key configuration.

Other considerations

Before switching the application. Create the deployment in the target environment, load the values you need through the Secrets Manager API, and check current, previous and version-specific reads. Existing values and their history in the storage service are not imported into the adapter’s record automatically. Test rotation and recovery. Run rotation against the real database or API it updates, including a failing test step and a retried call. Check deletion and restore before you rely on the recovery window. What you control. The customer controls access to the secret records, the rotation function’s permissions, backup retention and monitoring.

Example monthly charges

This Tensor9 BYOC scenario estimates service charges for the named origin and target services. Adapter hosting and commercial Tensor9 fees need separate allocations. How Tensor9 estimates costs explains the method and what the estimates include.
AWS Secrets Manager · Secret API reads
Feature: AWS Secrets Manager. Estimated monthly service charges by Secret API reads. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: us-central1; currency: USD.
AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized from 2 vCPU, 8 GiB memory and 100 GiB SSD at 0 operations/s to 32 vCPU, 128 GiB memory and 100 GiB SSD at 10,000 operations/s. Curve assumptions
  • Monthly operation quantity varies with this steady average rate; stored inventory and other meters retain their defaults. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → us-central1, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Monthly resource quantity is retained active provider versions, independent of logical source objects; access operations are separate from local adapter reads, and management operations are free. The account-wide free tier (6 versions, 10,000 accesses a month) is not applied.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • Secret Manager pricing: https://cloud.google.com/secret-manager/pricing
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-74be73a1c55cd94e18955e080cba3c0d8c54b8ff / 2026-10-22.planning.2. Curve: workload-1. Sources: AWS Price List API, AWSSecretsManager offer, Secret Manager pricing.
AWS Secrets Manager · Stored logical secrets
Feature: AWS Secrets Manager. Estimated monthly service charges by Stored logical secrets. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: us-central1; currency: USD.
AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD at every sample. Curve assumptions
  • Inventory varies independently of monthly reads and mutations. Retention remains an explicit planning assumption. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → us-central1, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Monthly resource quantity is retained active provider versions, independent of logical source objects; access operations are separate from local adapter reads, and management operations are free. The account-wide free tier (6 versions, 10,000 accesses a month) is not applied.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • Secret Manager pricing: https://cloud.google.com/secret-manager/pricing
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-74be73a1c55cd94e18955e080cba3c0d8c54b8ff / 2026-10-22.planning.2. Curve: workload-2. Sources: AWS Price List API, AWSSecretsManager offer, Secret Manager pricing. AWS Secrets Manager → Secret Manager: Authored native-usage planning example. Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Scenario source region: us-east-1. Scenario target region: us-central1. Currency: USD. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD for this scenario. Unestimated components: Adapter hosting, Tensor9 fees. A modeled adapted total and savings require these costs. Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
Scenario assumptions
  • Translated reads: 1,000,000 operations.
  • Translated writes: 10,000 operations.
  • Translated resident physical data: under 0.01 GiB-month.
  • Native provider operations: 25,300 operations.
  • Published payload: 0 GiB.
  • Delivered payload: 0 GiB.
  • Allocated execution CPU: 0 vCPU-hour.
  • Allocated execution RAM: 0 GiB-hour.
  • Independent resource allocation: 0 resource-hour.
  • Independent inventory: 200 resource-month.
  • Input tokens: 0 tokens.
  • Output tokens: 0 tokens.
  • Billable network: 0 GiB.
  • Dependent object sink retained data: 0 GiB-month.
  • Dependent object sink writes: 0 writes.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Monthly resource quantity is retained active provider versions, independent of logical source objects; access operations are separate from local adapter reads, and management operations are free. The account-wide free tier (6 versions, 10,000 accesses a month) is not applied.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
List prices read: 2026-10-22. Model: plan-74be73a1c55cd94e18955e080cba3c0d8c54b8ff / 2026-10-22.planning.2. Scenario: planning-example. Sources: AWS Price List API, AWSSecretsManager offer, Secret Manager pricing.

On Azure

Requests, versions, and deletion

Your application keeps sending AWS Secrets Manager requests, now to the Tensor9 adapter in the customer environment. The adapter keeps a saved record of each secret: its values, version IDs, stage labels, tags and lifecycle settings. Reads come from that record, not from whichever version happens to be newest in the storage service. PutSecretValue creates a version that never changes. AWSCURRENT, AWSPENDING, AWSPREVIOUS and custom labels each point at a version, and moving a label changes which value a read returns. Repeating a request with the same client request token and the same value returns the earlier result; reusing the token with a different value is rejected. Scheduled deletion blocks reads for a recovery window of 7 to 30 days, 30 by default. RestoreSecret cancels the deletion before the window ends. Force deletion removes the secret from the API at once; removing any copy in the storage service finishes separately.
Your application's Secrets Manager requests read and write the adapter's saved secret record. A background process copies the current value to Azure Key Vault.Your application's Secrets Manager requests read and write the adapter's saved secret record. A background process copies the current value to Azure Key Vault.

AWS version history stays in the record; the storage service holds a copy of the current value.

Rotation and access policies

The adapter runs the four rotation steps: create a new candidate secret, set it at its source, test it, and make it current. Your rotation function does the credential-specific work. The deployment must connect that function through the Lambda adapter; a rotation request is rejected when the configured function cannot be reached. Cancelling a rotation stops the run but leaves the AWSPENDING label in place for you to resolve. The resource-policy operations store, return, delete and validate the AWS policy document. Validation checks the syntax, public access, and policies that would lock every caller out of managing the policy. Storing a policy is not the same as enforcing all of it; see Limitations.

Storage, encryption, and replication

Azure Key Vault stores the current value under the deployment’s Azure identity. A version tag tracks the adapter revision because Key Vault’s native version IDs are opaque. The adapter retains AWS version history and stage labels independently. The adapter’s record keeps all versions and labels. A background process copies the current value and its revision to Azure Key Vault and keeps it up to date. Editing that copy directly does not update the AWS version history, and the edit can be overwritten. Protect and back up the adapter’s state as well as Azure Key Vault. Encryption follows the deployment’s storage and key configuration. The adapter keeps KmsKeyId as metadata only. Protect the adapter’s saved state, and configure any copy in the storage service to meet the workload’s encryption-key requirements. Replication requests keep the region settings in the secret record. They do not create a second copy or disaster recovery in another region by themselves; see Limitations. Key Vault limits a stored value to 25 KiB; encoded binary content must fit that limit. This backend’s deletion and name-reuse workflow requires purge permission. A purge-protected vault can block final removal or reuse of a deleted name. AWS scheduled deletion is handled by the adapter before this backend’s cleanup begins.

Limitations

Where this differs from AWS Secrets Manager
  • Resource policies behave differently: they are stored and validated, not fully enforced. The endpoint authorizes the calling principal, and access to the storage service uses the deployment’s cloud identity. Review effective permissions when a resource policy grants cross-account access or restricts more than the principal’s own permissions.
  • Regional replicas are not supported. Replication requests keep region settings only. You must configure and verify geographic replication of the underlying storage yourself. Only primary secrets are kept, and StopReplicationToReplica does not promote an independent regional replica.
  • KmsKeyId does not choose the encryption key. It is kept as metadata. Encryption comes from the deployment’s storage and key configuration.

Other considerations

Before switching the application. Create the deployment in the target environment, load the values you need through the Secrets Manager API, and check current, previous and version-specific reads. Existing values and their history in the storage service are not imported into the adapter’s record automatically. Test rotation and recovery. Run rotation against the real database or API it updates, including a failing test step and a retried call. Check deletion and restore before you rely on the recovery window. What you control. The customer controls access to the secret records, the rotation function’s permissions, backup retention and monitoring.

Example monthly charges

This Tensor9 BYOC scenario estimates service charges for the named origin and target services. Adapter hosting and commercial Tensor9 fees need separate allocations. How Tensor9 estimates costs explains the method and what the estimates include.
AWS Secrets Manager · Secret API reads
Feature: AWS Secrets Manager. Estimated monthly service charges by Secret API reads. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: eastus; currency: USD.
AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized from 2 vCPU, 8 GiB memory and 100 GiB SSD at 0 operations/s to 32 vCPU, 128 GiB memory and 100 GiB SSD at 10,000 operations/s. Curve assumptions
  • Monthly operation quantity varies with this steady average rate; stored inventory and other meters retain their defaults. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → eastus, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Provider reconciliation operations use the vault-operation rate; Standard secrets have no storage meter.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • Azure Retail Prices API: https://prices.azure.com/api/retail/prices
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-a5870b86a42807d366a1ccbb2d8d495c03fa4ea1 / 2026-10-22.planning.2. Curve: workload-1. Sources: AWS Price List API, AWSSecretsManager offer, Azure Retail Prices API.
AWS Secrets Manager · Stored logical secrets
Feature: AWS Secrets Manager. Estimated monthly service charges by Stored logical secrets. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: eastus; currency: USD.
AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD at every sample. Curve assumptions
  • Inventory varies independently of monthly reads and mutations. Retention remains an explicit planning assumption. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → eastus, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Provider reconciliation operations use the vault-operation rate; Standard secrets have no storage meter.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • Azure Retail Prices API: https://prices.azure.com/api/retail/prices
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-a5870b86a42807d366a1ccbb2d8d495c03fa4ea1 / 2026-10-22.planning.2. Curve: workload-2. Sources: AWS Price List API, AWSSecretsManager offer, Azure Retail Prices API. AWS Secrets Manager → Key Vault: Authored native-usage planning example. Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Scenario source region: us-east-1. Scenario target region: eastus. Currency: USD. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD for this scenario. Unestimated components: Adapter hosting, Tensor9 fees. A modeled adapted total and savings require these costs. Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
Scenario assumptions
  • Translated reads: 1,000,000 operations.
  • Translated writes: 10,000 operations.
  • Translated resident physical data: under 0.01 GiB-month.
  • Native provider operations: 25,300 operations.
  • Published payload: 0 GiB.
  • Delivered payload: 0 GiB.
  • Allocated execution CPU: 0 vCPU-hour.
  • Allocated execution RAM: 0 GiB-hour.
  • Independent resource allocation: 0 resource-hour.
  • Independent inventory: 200 resource-month.
  • Input tokens: 0 tokens.
  • Output tokens: 0 tokens.
  • Billable network: 0 GiB.
  • Dependent object sink retained data: 0 GiB-month.
  • Dependent object sink writes: 0 writes.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Provider reconciliation operations use the vault-operation rate; Standard secrets have no storage meter.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
List prices read: 2026-10-22. Model: plan-a5870b86a42807d366a1ccbb2d8d495c03fa4ea1 / 2026-10-22.planning.2. Scenario: planning-example. Sources: AWS Price List API, AWSSecretsManager offer, Azure Retail Prices API.

On OCI

Requests, versions, and deletion

Your application keeps sending AWS Secrets Manager requests, now to the Tensor9 adapter in the customer environment. The adapter keeps a saved record of each secret: its values, version IDs, stage labels, tags and lifecycle settings. Reads come from that record, not from whichever version happens to be newest in the storage service. PutSecretValue creates a version that never changes. AWSCURRENT, AWSPENDING, AWSPREVIOUS and custom labels each point at a version, and moving a label changes which value a read returns. Repeating a request with the same client request token and the same value returns the earlier result; reusing the token with a different value is rejected. Scheduled deletion blocks reads for a recovery window of 7 to 30 days, 30 by default. RestoreSecret cancels the deletion before the window ends. Force deletion removes the secret from the API at once; removing any copy in the storage service finishes separately.
Your application's Secrets Manager requests read and write the adapter's saved secret record. A background process copies the current value to OCI Vault.Your application's Secrets Manager requests read and write the adapter's saved secret record. A background process copies the current value to OCI Vault.

AWS version history stays in the record; the storage service holds a copy of the current value.

Rotation and access policies

The adapter runs the four rotation steps: create a new candidate secret, set it at its source, test it, and make it current. Your rotation function does the credential-specific work. The deployment must connect that function through the Lambda adapter; a rotation request is rejected when the configured function cannot be reached. Cancelling a rotation stops the run but leaves the AWSPENDING label in place for you to resolve. The resource-policy operations store, return, delete and validate the AWS policy document. Validation checks the syntax, public access, and policies that would lock every caller out of managing the policy. Storing a policy is not the same as enforcing all of it; see Limitations.

Storage, encryption, and replication

OCI Vault is the backend store for the current secret value in this mapping. OCI requires an encryption key for the vault secret and provides its own version stages and replication settings. The adapter owns AWS history and stage selection, independently of those native features. The adapter’s record keeps all versions and labels. A background process copies the current value and its revision to OCI Vault and keeps it up to date. Editing that copy directly does not update the AWS version history, and the edit can be overwritten. Protect and back up the adapter’s state as well as OCI Vault. Encryption follows the deployment’s storage and key configuration. The adapter keeps KmsKeyId as metadata only. Protect the adapter’s saved state, and configure any copy in the storage service to meet the workload’s encryption-key requirements. Replication requests keep the region settings in the secret record. They do not create a second copy or disaster recovery in another region by themselves; see Limitations. Configure the OCI key and any geographic replication for the provider copy. OCI’s native scheduled-deletion rules can delay physical removal after the AWS API has withdrawn a secret. These backend rules do not replace the adapter’s deletion window or create an independent AWS regional replica.

Limitations

Where this differs from AWS Secrets Manager
  • Resource policies behave differently: they are stored and validated, not fully enforced. The endpoint authorizes the calling principal, and access to the storage service uses the deployment’s cloud identity. Review effective permissions when a resource policy grants cross-account access or restricts more than the principal’s own permissions.
  • Regional replicas are not supported. Replication requests keep region settings only. You must configure and verify geographic replication of the underlying storage yourself. Only primary secrets are kept, and StopReplicationToReplica does not promote an independent regional replica.
  • KmsKeyId does not choose the encryption key. It is kept as metadata. Encryption comes from the deployment’s storage and key configuration.

Other considerations

Before switching the application. Create the deployment in the target environment, load the values you need through the Secrets Manager API, and check current, previous and version-specific reads. Existing values and their history in the storage service are not imported into the adapter’s record automatically. Test rotation and recovery. Run rotation against the real database or API it updates, including a failing test step and a retried call. Check deletion and restore before you rely on the recovery window. What you control. The customer controls access to the secret records, the rotation function’s permissions, backup retention and monitoring.

Example monthly charges

This Tensor9 BYOC scenario estimates service charges for the named origin and target services. Adapter hosting and commercial Tensor9 fees need separate allocations. How Tensor9 estimates costs explains the method and what the estimates include.
AWS Secrets Manager · Secret API reads
Feature: AWS Secrets Manager. Estimated monthly service charges by Secret API reads. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: us-ashburn-1; currency: USD.
AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized from 2 vCPU, 8 GiB memory and 100 GiB SSD at 0 operations/s to 32 vCPU, 128 GiB memory and 100 GiB SSD at 10,000 operations/s. Curve assumptions
  • Monthly operation quantity varies with this steady average rate; stored inventory and other meters retain their defaults. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → us-ashburn-1, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • OCI Secret Management has no charge for secret versions or retrieval; only an HSM-protected protecting key above 20 versions or a private vault (USD 3.724/hour) would bill, and the default software-protected key is free.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • OCI Secret Management: https://www.oracle.com/security/cloud-security/secrets/
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-a3102dfef67b819887de750afea3c1b456606428 / 2026-10-22.planning.2. Curve: workload-1. Sources: AWS Price List API, AWSSecretsManager offer, OCI Secret Management.
AWS Secrets Manager · Stored logical secrets
Feature: AWS Secrets Manager. Estimated monthly service charges by Stored logical secrets. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: us-ashburn-1; currency: USD.
AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD at every sample. Curve assumptions
  • Inventory varies independently of monthly reads and mutations. Retention remains an explicit planning assumption. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → us-ashburn-1, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • OCI Secret Management has no charge for secret versions or retrieval; only an HSM-protected protecting key above 20 versions or a private vault (USD 3.724/hour) would bill, and the default software-protected key is free.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • OCI Secret Management: https://www.oracle.com/security/cloud-security/secrets/
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-a3102dfef67b819887de750afea3c1b456606428 / 2026-10-22.planning.2. Curve: workload-2. Sources: AWS Price List API, AWSSecretsManager offer, OCI Secret Management. AWS Secrets Manager → OCI Vault: Authored native-usage planning example. Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Scenario source region: us-east-1. Scenario target region: us-ashburn-1. Currency: USD. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD for this scenario. Unestimated components: Adapter hosting, Tensor9 fees. A modeled adapted total and savings require these costs. Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
Scenario assumptions
  • Translated reads: 1,000,000 operations.
  • Translated writes: 10,000 operations.
  • Translated resident physical data: under 0.01 GiB-month.
  • Native provider operations: 25,300 operations.
  • Published payload: 0 GiB.
  • Delivered payload: 0 GiB.
  • Allocated execution CPU: 0 vCPU-hour.
  • Allocated execution RAM: 0 GiB-hour.
  • Independent resource allocation: 0 resource-hour.
  • Independent inventory: 200 resource-month.
  • Input tokens: 0 tokens.
  • Output tokens: 0 tokens.
  • Billable network: 0 GiB.
  • Dependent object sink retained data: 0 GiB-month.
  • Dependent object sink writes: 0 writes.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • OCI Secret Management has no charge for secret versions or retrieval; only an HSM-protected protecting key above 20 versions or a private vault (USD 3.724/hour) would bill, and the default software-protected key is free.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
List prices read: 2026-10-22. Model: plan-a3102dfef67b819887de750afea3c1b456606428 / 2026-10-22.planning.2. Scenario: planning-example. Sources: AWS Price List API, AWSSecretsManager offer, OCI Secret Management.

On Private Kubernetes

Requests, versions, and deletion

Your application keeps sending AWS Secrets Manager requests, now to the Tensor9 adapter in the customer environment. The adapter keeps a saved record of each secret: its values, version IDs, stage labels, tags and lifecycle settings. Reads come from that record, not from whichever version happens to be newest in the storage service. PutSecretValue creates a version that never changes. AWSCURRENT, AWSPENDING, AWSPREVIOUS and custom labels each point at a version, and moving a label changes which value a read returns. Repeating a request with the same client request token and the same value returns the earlier result; reusing the token with a different value is rejected. Scheduled deletion blocks reads for a recovery window of 7 to 30 days, 30 by default. RestoreSecret cancels the deletion before the window ends. Force deletion removes the secret from the API at once; removing any copy in the storage service finishes separately.
Your application's Secrets Manager requests read and write the adapter's saved secret record. No separate copy is kept elsewhere.Your application's Secrets Manager requests read and write the adapter's saved secret record. No separate copy is kept elsewhere.

The adapter keeps values and version history in its own saved state.

Rotation and access policies

The adapter runs the four rotation steps: create a new candidate secret, set it at its source, test it, and make it current. Your rotation function does the credential-specific work. The deployment must connect that function through the Lambda adapter; a rotation request is rejected when the configured function cannot be reached. Cancelling a rotation stops the run but leaves the AWSPENDING label in place for you to resolve. The resource-policy operations store, return, delete and validate the AWS policy document. Validation checks the syntax, public access, and policies that would lock every caller out of managing the policy. Storing a policy is not the same as enforcing all of it; see Limitations.

Storage, encryption, and replication

The customer deployment stores the secret entirely in the adapter’s durable state. This configuration creates no additional Kubernetes Secret. Version history and reads use the same secret record as cloud-backed deployments. All versions and labels stay in the adapter’s saved state. Protect that state store and its backups; no separate cloud secret copy is configured. Encryption follows the deployment’s storage and key configuration. The adapter keeps KmsKeyId as metadata only. Protect the adapter’s saved state, and configure any copy in the storage service to meet the workload’s encryption-key requirements. Replication requests keep the region settings in the secret record. They do not create a second copy or disaster recovery in another region by themselves; see Limitations. Storage durability, encryption, backups, and recovery depend on the appliance’s state store. A Kubernetes namespace or an external synchronization controller does not provide that history.

Limitations

Where this differs from AWS Secrets Manager
  • Resource policies behave differently: they are stored and validated, not fully enforced. The endpoint authorizes the calling principal, and access to the storage service uses the deployment’s cloud identity. Review effective permissions when a resource policy grants cross-account access or restricts more than the principal’s own permissions.
  • Regional replicas are not supported. Replication requests keep region settings only. You must configure and verify geographic replication of the underlying storage yourself. Only primary secrets are kept, and StopReplicationToReplica does not promote an independent regional replica.
  • KmsKeyId does not choose the encryption key. It is kept as metadata. Encryption comes from the deployment’s storage and key configuration.

Other considerations

Before switching the application. Create the deployment in the target environment, load the values you need through the Secrets Manager API, and check current, previous and version-specific reads. Existing values and their history in the storage service are not imported into the adapter’s record automatically. Test rotation and recovery. Run rotation against the real database or API it updates, including a failing test step and a retried call. Check deletion and restore before you rely on the recovery window. What you control. The customer controls access to the secret records, the rotation function’s permissions, backup retention and monitoring.

Example monthly charges

This Tensor9 BYOC scenario estimates service charges for the named origin and target services. Adapter hosting and commercial Tensor9 fees need separate allocations. How Tensor9 estimates costs explains the method and what the estimates include.
AWS Secrets Manager · Secret API reads
Feature: AWS Secrets Manager. Estimated monthly service charges by Secret API reads. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: us-central1; currency: USD.
AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.AWS Secrets Manager · Secret API reads: monthly service charges by Secret API reads. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized from 2 vCPU, 8 GiB memory and 100 GiB SSD at 0 operations/s to 32 vCPU, 128 GiB memory and 100 GiB SSD at 10,000 operations/s. Curve assumptions
  • Monthly operation quantity varies with this steady average rate; stored inventory and other meters retain their defaults. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → us-central1, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Self-hosted target: Tensor9-built Secrets Manager service on Kubernetes Secrets; no vendor charge. Selected CPU, RAM and physical disk allocation grow with workload; no per-operation price is assumed. No vendor charge: the target runs on the customer’s Kubernetes nodes, so CPU, RAM and disk bill at the Kubernetes node reference rates, Compute Engine N2 in us-central1 (USD 0.031611/vCPU-hour, 0.004237/GiB-hour) with pd-balanced disk (0.10/GiB-month) and Premium Tier egress. The cost-optimized E2 series lists 0.02181159/vCPU-hour and 0.00292353/GiB-hour; AWS m6i/r6i and Azure D2s v5/E2s v5 both decompose to 0.033/vCPU-hour and 0.00375/GiB-hour. Requested CPU and RAM are billed; node bin-packing waste, system reservations and the cluster control-plane fee are not.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • Compute Engine general-purpose machine pricing: https://cloud.google.com/products/compute/pricing/general-purpose
  • Disk and image pricing: https://cloud.google.com/compute/disks-image-pricing
  • Network pricing: https://cloud.google.com/vpc/network-pricing
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-3cc07bdd0f43f7beabfb1c23deaeed786570940f / 2026-10-22.planning.2. Curve: workload-1. Sources: AWS Price List API, AWSSecretsManager offer, Compute Engine general-purpose machine pricing, Disk and image pricing, Network pricing.
AWS Secrets Manager · Stored logical secrets
Feature: AWS Secrets Manager. Estimated monthly service charges by Stored logical secrets. Adapter hosting and Tensor9 fees are excluded. Source: us-east-1; target: us-central1; currency: USD.
AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.AWS Secrets Manager · Stored logical secrets: monthly service charges by Stored logical secrets. Exact values are in the following table.
Comparison pills describe all sampled scale points; amounts beside each service are for the named workload. Costs The Same means within 20% at every point. Costs Depend includes mixed results and unpriced samples. Sampled monthly charges in USD, rounded to cents. Difference means target minus origin; a positive difference means the target costs more. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD at every sample. Curve assumptions
  • Inventory varies independently of monthly reads and mutations. Retention remains an explicit planning assumption. Other native meters and workload assumptions retain their explicitly displayed default quantities. Workload translation and capacity assumptions are not benchmark measurements.
  • Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Rates as of 2026-10-22: us-east-1 → us-central1, USD/month.
  • Source prices are reference charges, not an invoice. Target lines cover selected service usage/configuration only; adapter hosting and Tensor9 fees are excluded.
  • Samples of explicit prices are not performance measurements or capacity qualification. No interpolation or break-even guarantee is implied.
  • Variant assumptions show the first axis sample; any axis-dependent configuration is described by this curve’s workload note.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Self-hosted target: Tensor9-built Secrets Manager service on Kubernetes Secrets; no vendor charge. Selected CPU, RAM and physical disk allocation grow with workload; no per-operation price is assumed. No vendor charge: the target runs on the customer’s Kubernetes nodes, so CPU, RAM and disk bill at the Kubernetes node reference rates, Compute Engine N2 in us-central1 (USD 0.031611/vCPU-hour, 0.004237/GiB-hour) with pd-balanced disk (0.10/GiB-month) and Premium Tier egress. The cost-optimized E2 series lists 0.02181159/vCPU-hour and 0.00292353/GiB-hour; AWS m6i/r6i and Azure D2s v5/E2s v5 both decompose to 0.033/vCPU-hour and 0.00375/GiB-hour. Requested CPU and RAM are billed; node bin-packing waste, system reservations and the cluster control-plane fee are not.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
  • AWS Price List API, AWSSecretsManager offer: https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AWSSecretsManager/current/us-east-1/index.json
  • Compute Engine general-purpose machine pricing: https://cloud.google.com/products/compute/pricing/general-purpose
  • Disk and image pricing: https://cloud.google.com/compute/disks-image-pricing
  • Network pricing: https://cloud.google.com/vpc/network-pricing
Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
List prices read: 2026-10-22. Model: plan-3cc07bdd0f43f7beabfb1c23deaeed786570940f / 2026-10-22.planning.2. Curve: workload-2. Sources: AWS Price List API, AWSSecretsManager offer, Compute Engine general-purpose machine pricing, Disk and image pricing, Network pricing. AWS Secrets Manager → Kubernetes Secret: Authored native-usage planning example. Native monthly usage priced at the cited provider list prices; listed target allowances apply where present, excluding invoice credits, taxes and negotiated discounts. Scenario source region: us-east-1. Scenario target region: us-central1. Currency: USD. Estimated allocation, not benchmark calibrated: sized at 2 vCPU, 8 GiB memory and 100 GiB SSD for this scenario. Unestimated components: Adapter hosting, Tensor9 fees. A modeled adapted total and savings require these costs. Cost scope: Modeled target native service and explicitly modeled state allocation; hosting and Tensor9 fees only when supplied. Excluded costs and workload features:
  • Free allowances, committed discounts, credits, taxes and negotiated rates.
  • Commercial Tensor9 fees and operations labor unless entered separately.
  • Rotation-function execution, customer-managed encryption-key calls, geographic replica copies and External Secrets source polling.
  • Taxes, discounts, credits and free-tier allowances not explicitly listed by this model.
  • Unmodeled dependent services, task execution and operations outside the selected workload family.
Scenario assumptions
  • Translated reads: 1,000,000 operations.
  • Translated writes: 10,000 operations.
  • Translated resident physical data: under 0.01 GiB-month.
  • Native provider operations: 25,300 operations.
  • Published payload: 0 GiB.
  • Delivered payload: 0 GiB.
  • Allocated execution CPU: 0 vCPU-hour.
  • Allocated execution RAM: 0 GiB-hour.
  • Independent resource allocation: 0 resource-hour.
  • Independent inventory: 200 resource-month.
  • Input tokens: 0 tokens.
  • Output tokens: 0 tokens.
  • Billable network: 0 GiB.
  • Dependent object sink retained data: 0 GiB-month.
  • Dependent object sink writes: 0 writes.
  • Rates are cited provider list prices, editable for discounts, commitments or another region. Workload translation and capacity coefficients remain editable planning assumptions, not benchmark measurements or a commercial quote.
  • Default-zero rates are explicit assumptions, not evidence that the deployed service or resource is free.
  • Provisioned-unit minimums use an editable approximate allocation floor. Modeled target service cost is max(usage/allocation, minimum), with billable network, durable staging and dependent sinks added separately; actual RU/TU sizing, scaling increments and throughput remain unqualified.
  • Durable staging is priced once: provisioned targets include adapter state in their selected allocation; native targets add a separate staging allocation when required. Adapter hosting is a separate allocation and must exclude resources already priced as staging, workers or target capacity.
  • A declared adapter mapping and cost model do not establish implementation availability or service equivalence.
  • This is a declared directed mapping; a planning estimate does not establish deployment or request-serving support.
  • Origin unit prices are cited provider list prices. Retention, amplification, and capacity coefficients are authored planning guesses; they are editable, not measured capacity.
  • Application reads use durable adapter records. Managed operations estimate independent backend reconciliation, not a provider secret-access charge on every application read.
  • The External Secrets synchronization option has a different read path: source polling and its source-provider charges must be supplied separately. This family does not imply those source charges disappear.
  • The adapter-state Kubernetes backend creates no additional Kubernetes Secret; cloud provider copies and history have separate retention.
  • Self-hosted target: Tensor9-built Secrets Manager service on Kubernetes Secrets; no vendor charge. Selected CPU, RAM and physical disk allocation grow with workload; no per-operation price is assumed. No vendor charge: the target runs on the customer’s Kubernetes nodes, so CPU, RAM and disk bill at the Kubernetes node reference rates, Compute Engine N2 in us-central1 (USD 0.031611/vCPU-hour, 0.004237/GiB-hour) with pd-balanced disk (0.10/GiB-month) and Premium Tier egress. The cost-optimized E2 series lists 0.02181159/vCPU-hour and 0.00292353/GiB-hour; AWS m6i/r6i and Azure D2s v5/E2s v5 both decompose to 0.033/vCPU-hour and 0.00375/GiB-hour. Requested CPU and RAM are billed; node bin-packing waste, system reservations and the cluster control-plane fee are not.
  • Row-store throughput (capacityOpsPerVcpuSecond, default 1500) is measured-by-tensor9 as a lower bound: the DynamoDB adapter on Cloud SQL db-custom-2-7680 (2 vCPU, PostgreSQL 16, us-west1) served 2,974 ops/s of YCSB-A at 16 threads without recorded saturation (src/main/kotlin/t9/prime/equiv/generated/eval/CloudsqlPostgresqlYcsbAT16GoYcsbV1_0_0.kt). Published CPU-bound pgbench reaches 3,101 read-write transactions and 20,289 point reads per vCPU-second (AWS z1d.2xlarge, PostgreSQL 14.5), so actual capacity is likely higher. Reads and writes share one coefficient: at the same adapter version, read-only YCSB-C was not faster than 50%-update YCSB-A.
  • Log-broker throughput (capacityStreamMiBPerVcpuSecond 20 at 0.5 utilization, 4 GiB RAM per vCPU) is provider-documented by Google Managed Service for Apache Kafka sizing (https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/plan-cluster-size): write-equivalent bytes are replicated writes plus a quarter of reads. Producer batches below 10 KB lower per-CPU throughput; that penalty is not modeled.
  • Disk utilization 0.8 is provider-documented headroom below Cloud SQL automatic storage increase, which triggers near 91-95% full (https://docs.cloud.google.com/sql/docs/postgres/instance-settings). The 20 GiB reserve exceeds PostgreSQL’s 1 GB default max_wal_size; the remainder of that reserve is unmeasured.
  • CPU tiers double from 2 vCPUs to the target’s largest node at 4 GiB per vCPU; each target’s documented largest node bounds CPU, RAM, RAM per vCPU and disk, and the durable staging database uses Cloud SQL Enterprise (96 vCPU, 6.5 GiB per vCPU, 624 GiB, 64 TiB). Targets billed per capacity unit or throughput unit are sized by their backend instead.
  • No public evidence: peak/mean work (2) and the RAM working-set fraction (0.1). Proposed measurements: the p99 one-minute rate over the monthly mean from customer CloudWatch metrics; the buffer hit ratio while stepping RAM under a fixed YCSB-B load.
  • Node bounds: Cloud SQL Enterprise allows 1-96 vCPUs at 0.9-6.5 GB per vCPU and up to 64 TB with a dedicated vCPU (https://docs.cloud.google.com/sql/docs/postgres/instance-settings).
  • Stored GiB already includes the origin family’s physical footprint assumptions; no second storage amplification is applied.
  • The operations/vCPU coefficient supplies the compute requirement alongside explicit resource-hour minima.
  • Copies and allocation fractions change cost only; they do not increase modeled primary capacity.
List prices read: 2026-10-22. Model: plan-3cc07bdd0f43f7beabfb1c23deaeed786570940f / 2026-10-22.planning.2. Scenario: planning-example. Sources: AWS Price List API, AWSSecretsManager offer, Compute Engine general-purpose machine pricing, Disk and image pricing, Network pricing.

Costs

Estimated monthly service charges for each backend with a published cost model, at one sampled workload from that model’s cost curve. Adapter hosting and Tensor9 fees are excluded. How Tensor9 estimates costs explains the method, what the estimates include and how to read their qualifications. Difference means backend minus origin; a positive difference means the backend costs more. Workloads and target configurations differ by model, so compare each row’s difference at its stated workload rather than charges across rows. Cost curves across workload sizes, with every assumption and exclusion: Secrets Manager costs.

Service level agreements

These tables show Tensor9’s standard service levels and adapters whose standard terms are still being defined. Your signed agreement determines the SLAs, covered adapters and operations, limits, remedies and support terms that apply to your deployment.
Listed terms cover requests sent through this service adapter. They do not cover direct connections to the target service or replace the cloud provider’s own SLA. Each origin-to-target pair has its own terms or an explicit pending status. See the SLA tables, measurement rules, and scaling conditions.

Secrets Manager to Key Vault

Adapter-added latency. A + prefix marks time added by the adapter, not the total time your application waits. Total request time includes adapter processing, backend service time and network time. The backend provider’s SLA applies independently. Only separately measured target-service wait may be subtracted, and only when your agreement permits it; internal metadata, coordination and retry processing still count. For one request, 12 ms of adapter processing plus 90 ms waiting for the backend means at least 102 ms total. This example does not add monthly p99 values. What Tensor9 covers. These service levels cover the adapter between the origin API and target API. They do not replace the target provider’s SLA. How latency is counted. Adapter work, including metadata and coordination, counts. Only separately measured permitted target waits are excluded. Which terms apply. Your signed agreement names the covered operations, workload limits, remedies, and final service levels for your deployment.

What this adapter does

The adapter authenticates and authorizes the request, reads or mutates versioned secret state, and translates the result to the Secrets Manager API. Calls that coordinate rotation, replication or a target secret store have a distinct budget; external Lambda and provider execution are excluded only at explicit measurement spans.

How the latency targets were chosen

Secret point reads: +4 ms monthly p99 (adapter-added). DescribeSecret, GetRandomPassword, GetResourcePolicy, GetSecretValue, ValidateResourcePolicy. Authorization, version lookup and bounded response conversion. Bounded secret lists: +12 ms monthly p99 (adapter-added). BatchGetSecretValue, ListSecretVersionIds, ListSecrets. Bounded lookup fan-out and page assembly. Secret and policy mutation: +12 ms monthly p99 (adapter-added). CreateSecret, DeleteResourcePolicy, DeleteSecret, PutResourcePolicy, PutSecretValue, RestoreSecret, TagResource, UntagResource, UpdateSecret, UpdateSecretVersionStage. Validation plus one serialized durable secret-state commit. Rotation and replication coordination: +25 ms monthly p99 (adapter-added). CancelRotateSecret, RemoveRegionsFromReplication, ReplicateSecretToRegions, RotateSecret. Durable workflow transition and bounded reconciliation scheduling. Your signed agreement sets the terms for your deployment. A target does not add an operation or option that the compatibility tables mark unavailable.

What counts toward latency

For a request-response row, measure from the agreed ingress boundary to dispatch of the complete response. A row that explicitly names a first response chunk ends at that chunk; its number does not cover the rest of the stream. A long-poll row names the intentional wait and when adapter delay starts. Include parsing, authorization, admission, translation, serialization, adapter-owned storage and coordination, retries and response handling. Subtract only separately measured target-workload waits and external network segments allowed by the measurement rules. The adapter’s own response handling and dispatch remain covered. A database used for adapter metadata is still adapter work, even if a cloud provider hosts it. For concurrent calls, exclude the union of permitted wait intervals, not the sum of overlapping spans. Calculate each request’s adapter duration first, then the monthly p99. Do not subtract one service’s p99 from another’s. Known adapter timeouts are over-budget samples; failed or incomplete requests cannot disappear to improve the percentile. Missing measurements do not become zero latency. An SDK call span alone does not prove how much of its duration can be excluded.

Endpoint reachability and request failures

The endpoint-reachability target measures adapter health checks. Correctly forwarding a target quota or permission error is different from producing that error because the adapter sent the wrong request. Adapter-caused failures remain Tensor9’s responsibility even when the target is healthy. Correctness and data-integrity requirements apply to every supported request. Endpoint reachability does not measure request correctness or grant an allowance for incorrect results.

Scaling and target-service capacity

Reads shard by secret identity and version. Mutations on one secret serialize to protect staging-label and deletion invariants, while unrelated secrets remain parallel. List and batch qualification fixes page size, secret count, payload bytes and concurrency; rotation trials include bounded callback and retry accounting without treating callback time as local compute. Tell Tensor9 the expected steady rate, bursts, concurrency, payload sizes and operation mix. Tensor9 sizes and scales the adapter for the agreed load; you choose and monitor the target service’s capacity with Tensor9’s help. A latency budget is not a requests-per-second rating. Larger requests and higher rates need explicit terms, not silent inheritance of a small-request SLA.

Data and behavior guarantees

A returned success means secret material and version metadata are durable. AWSCURRENT/AWSPREVIOUS transitions remain atomic, recovery windows are honored, resource policies never widen on translation, and replica or rotation failures cannot expose an uncommitted version.

Example and diagnosis

PutSecretValue creates a new version and moves AWSCURRENT in one logical mutation. A simultaneous GetSecretValue either sees the old complete version or the new complete version. RotateSecret uses the coordination group and reports callback/provider time separately from adapter admission, state transitions and response work. Use tensor9 explain and the documented explain headers to understand the selected adapter and its behavior. Correlate available request diagnostics with the target provider’s latency, throttling and capacity metrics. An explain report helps diagnose a request; it is not by itself a qualified SLA timing measurement. Share the operation, request shape, timestamps and request identifiers with support, with credentials and customer payloads removed.

Secrets Manager to Secret Manager

Adapter-added latency. A + prefix marks time added by the adapter, not the total time your application waits. Total request time includes adapter processing, backend service time and network time. The backend provider’s SLA applies independently. Only separately measured target-service wait may be subtracted, and only when your agreement permits it; internal metadata, coordination and retry processing still count. For one request, 12 ms of adapter processing plus 90 ms waiting for the backend means at least 102 ms total. This example does not add monthly p99 values. What Tensor9 covers. These service levels cover the adapter between the origin API and target API. They do not replace the target provider’s SLA. How latency is counted. Adapter work, including metadata and coordination, counts. Only separately measured permitted target waits are excluded. Which terms apply. Your signed agreement names the covered operations, workload limits, remedies, and final service levels for your deployment.

What this adapter does

The adapter authenticates and authorizes the request, reads or mutates versioned secret state, and translates the result to the Secrets Manager API. Calls that coordinate rotation, replication or a target secret store have a distinct budget; external Lambda and provider execution are excluded only at explicit measurement spans.

How the latency targets were chosen

Secret point reads: +4 ms monthly p99 (adapter-added). DescribeSecret, GetRandomPassword, GetResourcePolicy, GetSecretValue, ValidateResourcePolicy. Authorization, version lookup and bounded response conversion. Bounded secret lists: +12 ms monthly p99 (adapter-added). BatchGetSecretValue, ListSecretVersionIds, ListSecrets. Bounded lookup fan-out and page assembly. Secret and policy mutation: +12 ms monthly p99 (adapter-added). CreateSecret, DeleteResourcePolicy, DeleteSecret, PutResourcePolicy, PutSecretValue, RestoreSecret, TagResource, UntagResource, UpdateSecret, UpdateSecretVersionStage. Validation plus one serialized durable secret-state commit. Rotation and replication coordination: +25 ms monthly p99 (adapter-added). CancelRotateSecret, RemoveRegionsFromReplication, ReplicateSecretToRegions, RotateSecret. Durable workflow transition and bounded reconciliation scheduling. Your signed agreement sets the terms for your deployment. A target does not add an operation or option that the compatibility tables mark unavailable.

What counts toward latency

For a request-response row, measure from the agreed ingress boundary to dispatch of the complete response. A row that explicitly names a first response chunk ends at that chunk; its number does not cover the rest of the stream. A long-poll row names the intentional wait and when adapter delay starts. Include parsing, authorization, admission, translation, serialization, adapter-owned storage and coordination, retries and response handling. Subtract only separately measured target-workload waits and external network segments allowed by the measurement rules. The adapter’s own response handling and dispatch remain covered. A database used for adapter metadata is still adapter work, even if a cloud provider hosts it. For concurrent calls, exclude the union of permitted wait intervals, not the sum of overlapping spans. Calculate each request’s adapter duration first, then the monthly p99. Do not subtract one service’s p99 from another’s. Known adapter timeouts are over-budget samples; failed or incomplete requests cannot disappear to improve the percentile. Missing measurements do not become zero latency. An SDK call span alone does not prove how much of its duration can be excluded.

Endpoint reachability and request failures

The endpoint-reachability target measures adapter health checks. Correctly forwarding a target quota or permission error is different from producing that error because the adapter sent the wrong request. Adapter-caused failures remain Tensor9’s responsibility even when the target is healthy. Correctness and data-integrity requirements apply to every supported request. Endpoint reachability does not measure request correctness or grant an allowance for incorrect results.

Scaling and target-service capacity

Reads shard by secret identity and version. Mutations on one secret serialize to protect staging-label and deletion invariants, while unrelated secrets remain parallel. List and batch qualification fixes page size, secret count, payload bytes and concurrency; rotation trials include bounded callback and retry accounting without treating callback time as local compute. Tell Tensor9 the expected steady rate, bursts, concurrency, payload sizes and operation mix. Tensor9 sizes and scales the adapter for the agreed load; you choose and monitor the target service’s capacity with Tensor9’s help. A latency budget is not a requests-per-second rating. Larger requests and higher rates need explicit terms, not silent inheritance of a small-request SLA.

Data and behavior guarantees

A returned success means secret material and version metadata are durable. AWSCURRENT/AWSPREVIOUS transitions remain atomic, recovery windows are honored, resource policies never widen on translation, and replica or rotation failures cannot expose an uncommitted version.

Example and diagnosis

PutSecretValue creates a new version and moves AWSCURRENT in one logical mutation. A simultaneous GetSecretValue either sees the old complete version or the new complete version. RotateSecret uses the coordination group and reports callback/provider time separately from adapter admission, state transitions and response work. Use tensor9 explain and the documented explain headers to understand the selected adapter and its behavior. Correlate available request diagnostics with the target provider’s latency, throttling and capacity metrics. An explain report helps diagnose a request; it is not by itself a qualified SLA timing measurement. Share the operation, request shape, timestamps and request identifiers with support, with credentials and customer payloads removed.

Secrets Manager to OCI Vault

Adapter-added latency. A + prefix marks time added by the adapter, not the total time your application waits. Total request time includes adapter processing, backend service time and network time. The backend provider’s SLA applies independently. Only separately measured target-service wait may be subtracted, and only when your agreement permits it; internal metadata, coordination and retry processing still count. For one request, 12 ms of adapter processing plus 90 ms waiting for the backend means at least 102 ms total. This example does not add monthly p99 values. What Tensor9 covers. These service levels cover the adapter between the origin API and target API. They do not replace the target provider’s SLA. How latency is counted. Adapter work, including metadata and coordination, counts. Only separately measured permitted target waits are excluded. Which terms apply. Your signed agreement names the covered operations, workload limits, remedies, and final service levels for your deployment.

What this adapter does

The adapter authenticates and authorizes the request, reads or mutates versioned secret state, and translates the result to the Secrets Manager API. Calls that coordinate rotation, replication or a target secret store have a distinct budget; external Lambda and provider execution are excluded only at explicit measurement spans.

How the latency targets were chosen

Secret point reads: +4 ms monthly p99 (adapter-added). DescribeSecret, GetRandomPassword, GetResourcePolicy, GetSecretValue, ValidateResourcePolicy. Authorization, version lookup and bounded response conversion. Bounded secret lists: +12 ms monthly p99 (adapter-added). BatchGetSecretValue, ListSecretVersionIds, ListSecrets. Bounded lookup fan-out and page assembly. Secret and policy mutation: +12 ms monthly p99 (adapter-added). CreateSecret, DeleteResourcePolicy, DeleteSecret, PutResourcePolicy, PutSecretValue, RestoreSecret, TagResource, UntagResource, UpdateSecret, UpdateSecretVersionStage. Validation plus one serialized durable secret-state commit. Rotation and replication coordination: +25 ms monthly p99 (adapter-added). CancelRotateSecret, RemoveRegionsFromReplication, ReplicateSecretToRegions, RotateSecret. Durable workflow transition and bounded reconciliation scheduling. Your signed agreement sets the terms for your deployment. A target does not add an operation or option that the compatibility tables mark unavailable.

What counts toward latency

For a request-response row, measure from the agreed ingress boundary to dispatch of the complete response. A row that explicitly names a first response chunk ends at that chunk; its number does not cover the rest of the stream. A long-poll row names the intentional wait and when adapter delay starts. Include parsing, authorization, admission, translation, serialization, adapter-owned storage and coordination, retries and response handling. Subtract only separately measured target-workload waits and external network segments allowed by the measurement rules. The adapter’s own response handling and dispatch remain covered. A database used for adapter metadata is still adapter work, even if a cloud provider hosts it. For concurrent calls, exclude the union of permitted wait intervals, not the sum of overlapping spans. Calculate each request’s adapter duration first, then the monthly p99. Do not subtract one service’s p99 from another’s. Known adapter timeouts are over-budget samples; failed or incomplete requests cannot disappear to improve the percentile. Missing measurements do not become zero latency. An SDK call span alone does not prove how much of its duration can be excluded.

Endpoint reachability and request failures

The endpoint-reachability target measures adapter health checks. Correctly forwarding a target quota or permission error is different from producing that error because the adapter sent the wrong request. Adapter-caused failures remain Tensor9’s responsibility even when the target is healthy. Correctness and data-integrity requirements apply to every supported request. Endpoint reachability does not measure request correctness or grant an allowance for incorrect results.

Scaling and target-service capacity

Reads shard by secret identity and version. Mutations on one secret serialize to protect staging-label and deletion invariants, while unrelated secrets remain parallel. List and batch qualification fixes page size, secret count, payload bytes and concurrency; rotation trials include bounded callback and retry accounting without treating callback time as local compute. Tell Tensor9 the expected steady rate, bursts, concurrency, payload sizes and operation mix. Tensor9 sizes and scales the adapter for the agreed load; you choose and monitor the target service’s capacity with Tensor9’s help. A latency budget is not a requests-per-second rating. Larger requests and higher rates need explicit terms, not silent inheritance of a small-request SLA.

Data and behavior guarantees

A returned success means secret material and version metadata are durable. AWSCURRENT/AWSPREVIOUS transitions remain atomic, recovery windows are honored, resource policies never widen on translation, and replica or rotation failures cannot expose an uncommitted version.

Example and diagnosis

PutSecretValue creates a new version and moves AWSCURRENT in one logical mutation. A simultaneous GetSecretValue either sees the old complete version or the new complete version. RotateSecret uses the coordination group and reports callback/provider time separately from adapter admission, state transitions and response work. Use tensor9 explain and the documented explain headers to understand the selected adapter and its behavior. Correlate available request diagnostics with the target provider’s latency, throttling and capacity metrics. An explain report helps diagnose a request; it is not by itself a qualified SLA timing measurement. Share the operation, request shape, timestamps and request identifiers with support, with credentials and customer payloads removed.

Secrets Manager to Kubernetes Secret

Adapter-added latency. A + prefix marks time added by the adapter, not the total time your application waits. Total request time includes adapter processing, backend service time and network time. The backend provider’s SLA applies independently. Only separately measured target-service wait may be subtracted, and only when your agreement permits it; internal metadata, coordination and retry processing still count. For one request, 12 ms of adapter processing plus 90 ms waiting for the backend means at least 102 ms total. This example does not add monthly p99 values. What Tensor9 covers. These service levels cover the adapter between the origin API and target API. They do not replace the target provider’s SLA. How latency is counted. Adapter work, including metadata and coordination, counts. Only separately measured permitted target waits are excluded. Which terms apply. Your signed agreement names the covered operations, workload limits, remedies, and final service levels for your deployment.

What this adapter does

The adapter authenticates and authorizes the request, reads or mutates versioned secret state, and translates the result to the Secrets Manager API. Calls that coordinate rotation, replication or a target secret store have a distinct budget; external Lambda and provider execution are excluded only at explicit measurement spans.

How the latency targets were chosen

Secret point reads: +4 ms monthly p99 (adapter-added). DescribeSecret, GetRandomPassword, GetResourcePolicy, GetSecretValue, ValidateResourcePolicy. Authorization, version lookup and bounded response conversion. Bounded secret lists: +12 ms monthly p99 (adapter-added). BatchGetSecretValue, ListSecretVersionIds, ListSecrets. Bounded lookup fan-out and page assembly. Secret and policy mutation: +12 ms monthly p99 (adapter-added). CreateSecret, DeleteResourcePolicy, DeleteSecret, PutResourcePolicy, PutSecretValue, RestoreSecret, TagResource, UntagResource, UpdateSecret, UpdateSecretVersionStage. Validation plus one serialized durable secret-state commit. Rotation and replication coordination: +25 ms monthly p99 (adapter-added). CancelRotateSecret, RemoveRegionsFromReplication, ReplicateSecretToRegions, RotateSecret. Durable workflow transition and bounded reconciliation scheduling. Your signed agreement sets the terms for your deployment. A target does not add an operation or option that the compatibility tables mark unavailable.

What counts toward latency

For a request-response row, measure from the agreed ingress boundary to dispatch of the complete response. A row that explicitly names a first response chunk ends at that chunk; its number does not cover the rest of the stream. A long-poll row names the intentional wait and when adapter delay starts. Include parsing, authorization, admission, translation, serialization, adapter-owned storage and coordination, retries and response handling. Subtract only separately measured target-workload waits and external network segments allowed by the measurement rules. The adapter’s own response handling and dispatch remain covered. A database used for adapter metadata is still adapter work, even if a cloud provider hosts it. For concurrent calls, exclude the union of permitted wait intervals, not the sum of overlapping spans. Calculate each request’s adapter duration first, then the monthly p99. Do not subtract one service’s p99 from another’s. Known adapter timeouts are over-budget samples; failed or incomplete requests cannot disappear to improve the percentile. Missing measurements do not become zero latency. An SDK call span alone does not prove how much of its duration can be excluded.

Endpoint reachability and request failures

The endpoint-reachability target measures adapter health checks. Correctly forwarding a target quota or permission error is different from producing that error because the adapter sent the wrong request. Adapter-caused failures remain Tensor9’s responsibility even when the target is healthy. Correctness and data-integrity requirements apply to every supported request. Endpoint reachability does not measure request correctness or grant an allowance for incorrect results.

Scaling and target-service capacity

Reads shard by secret identity and version. Mutations on one secret serialize to protect staging-label and deletion invariants, while unrelated secrets remain parallel. List and batch qualification fixes page size, secret count, payload bytes and concurrency; rotation trials include bounded callback and retry accounting without treating callback time as local compute. Tell Tensor9 the expected steady rate, bursts, concurrency, payload sizes and operation mix. Tensor9 sizes and scales the adapter for the agreed load; you choose and monitor the target service’s capacity with Tensor9’s help. A latency budget is not a requests-per-second rating. Larger requests and higher rates need explicit terms, not silent inheritance of a small-request SLA.

Data and behavior guarantees

A returned success means secret material and version metadata are durable. AWSCURRENT/AWSPREVIOUS transitions remain atomic, recovery windows are honored, resource policies never widen on translation, and replica or rotation failures cannot expose an uncommitted version.

Example and diagnosis

PutSecretValue creates a new version and moves AWSCURRENT in one logical mutation. A simultaneous GetSecretValue either sees the old complete version or the new complete version. RotateSecret uses the coordination group and reports callback/provider time separately from adapter admission, state transitions and response work. Use tensor9 explain and the documented explain headers to understand the selected adapter and its behavior. Correlate available request diagnostics with the target provider’s latency, throttling and capacity metrics. An explain report helps diagnose a request; it is not by itself a qualified SLA timing measurement. Share the operation, request shape, timestamps and request identifiers with support, with credentials and customer payloads removed.

Debug this service

For requests through a service adapter, use Explain and request diagnostics to investigate the selected mapping. Follow the BYOC service-adapter debugging runbook to capture and interpret the diagnostic evidence. Service Catalog.