Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
db33e76
PBM-1660-Add-support-for-Workload-Identity-Authentication
rasika-chivate Feb 18, 2026
8e3c167
Create workload-identity-authentication.md.md
rasika-chivate Feb 18, 2026
74c60b0
Update workload-identity-authentication.md.md
rasika-chivate Feb 19, 2026
ad4da50
Update workload-identity-authentication.md.md
rasika-chivate Feb 19, 2026
5895f49
removed extra.md from the file
rasika-chivate Feb 19, 2026
7785668
Formatting fixes
rasika-chivate Feb 19, 2026
fe4c2de
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
c31911a
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
729b30a
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
d057c3b
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
bbbbdca
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
bf7b36f
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
f591cb2
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
7c7c3ea
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
f9e0181
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
9e93a80
Merge branch 'PBM-1660-Add-support-for-Workload-Identity-Authenticati…
rasika-chivate Feb 19, 2026
243ed80
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
b8a7728
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
fdb6d85
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
4b90312
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
78688bc
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
eda9fc1
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
fbfcf87
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
e3a6594
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
6cd53c0
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
cf584ac
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
29b8439
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
9ba5143
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
1725b92
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
27ba289
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
9bd561b
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
52ff0ac
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
358f940
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
01097ea
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
ea89433
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
933c279
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
81c8a41
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
d8b7585
Merge branch 'PBM-1660-Add-support-for-Workload-Identity-Authenticati…
rasika-chivate Feb 19, 2026
e35eb97
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
d1fbf3b
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 19, 2026
a188da8
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
b0106e5
Merge branch 'PBM-1660-Add-support-for-Workload-Identity-Authenticati…
rasika-chivate Feb 19, 2026
ed41f73
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
86333fc
Update workload-identity-authentication.md
rasika-chivate Feb 19, 2026
7b2eebc
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 20, 2026
2495ec5
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 20, 2026
02052a0
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 20, 2026
bfffb33
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 20, 2026
0c77d3e
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 20, 2026
511b7e3
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 20, 2026
10297a7
Update docs/details/workload-identity-authentication.md
rasika-chivate Feb 20, 2026
de56c15
Update workload-identity-authentication.md
rasika-chivate Feb 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
192 changes: 192 additions & 0 deletions docs/details/workload-identity-authentication.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
# Workload Identity authentication for GCS

Percona Backup for MongoDB (PBM) now supports Workload Identity Federation (WIF) for authenticating with Google Cloud Storage (GCS).

Check warning on line 3 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L3

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 3, "column": 113}}}, "severity": "WARNING"}

This feature enables secure backup uploads without relying on static service account JSON keys. Instead, PBM uses short-lived, **automatically refreshed tokens** obtained through federation with an external identity provider (IdP).

## Why Workload Identity

Check warning on line 7 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L7

[Google.Headings] 'Why Workload Identity' should use sentence-style capitalization.
Raw output
{"message": "[Google.Headings] 'Why Workload Identity' should use sentence-style capitalization.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 7, "column": 4}}}, "severity": "WARNING"}

Workload Identity Federation lets on‑premises or multicloud workloads access Google Cloud resources using federated identities instead of a service account key, eliminating the maintenance and security burden of service account keys.

Check warning on line 9 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L9

[Vale.Spelling] Did you really mean 'multicloud'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'multicloud'?", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 9, "column": 50}}}, "severity": "WARNING"}

Check warning on line 9 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L9

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 9, "column": 85}}}, "severity": "WARNING"}

## How it works with PBM

PBM integrates with Workload Identity Federation as follows:
{.power-number}

1. PBM authenticates with its external IdP (e.g., OIDC, SAML, AWS, Azure).

Check failure on line 16 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L16

[Google.Latin] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Google.Latin] Use 'for example' instead of 'e.g.'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 16, "column": 45}}}, "severity": "ERROR"}

2. PBM exchanges the IdP credential with Google’s Security Token Service (STS).

3. STS issues a short-lived federated token.

4. PBM uses this token to impersonate a Google Cloud service account with the required GCS permissions. PBM communicates with GCS using Google Cloud libraries/SDKs (PBM 2.10.0+ uses the Google Cloud SDK for GCS).

Check warning on line 22 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L22

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 22, "column": 48}}}, "severity": "WARNING"}

Check warning on line 22 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L22

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 22, "column": 144}}}, "severity": "WARNING"}

Check warning on line 22 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L22

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 22, "column": 194}}}, "severity": "WARNING"}

5. Backups are uploaded securely to GCS without static keys.

With Workload Identity Authentication, PBM relies on **Application Default Credentials** (ADC) provided by the runtime (for example, GKE metadata server, or an external Workload Identity Federation credential configuration file). When ADC is available, PBM can upload and download backups from GCS **without embedding JSON private keys** in the PBM config.
Comment on lines +3 to +26
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

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

The main GCS documentation (gcs.md) should be updated to reference this new Workload Identity authentication method. Consider adding a bullet point in the gcs.md file under the "To use GCS, you need the following:" section that mentions Workload Identity Federation as an alternative authentication method with a link to this document. However, this change would need to be made in gcs.md (which is not part of this PR), so this is just a suggestion for a follow-up improvement.

Copilot uses AI. Check for mistakes.

Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

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

Consider adding a brief "Prerequisites" or "Before you begin" section before "Configuration steps" that lists what users need to have ready (e.g., a GCS bucket, appropriate GCP permissions to create workload identity pools, PBM version 2.10.0 or higher installed). This follows the pattern seen in other storage configuration documents and helps users prepare before starting the configuration process.

Suggested change
## Prerequisites
Before you begin configuring Workload Identity Federation for PBM, ensure that you have:
- **Percona Backup for MongoDB (PBM) 2.10.0 or higher** installed and running on your MongoDB cluster.
- A **Google Cloud project** where you can create and manage IAM resources.
- Permission in that project to **create Workload Identity pools and providers**, **create service accounts**, and **grant IAM roles** (for example, project-level IAM admin or equivalent delegated rights).
- A **Google Cloud Storage (GCS) bucket** (existing or planned) to store PBM backups.
- The **`gcloud` CLI** installed and configured (`gcloud auth` completed and the correct project set) on the system from which you will run the commands below.
- Access to your **external identity provider (IdP)** (for example, OIDC provider, Kubernetes, GitHub Actions, AWS, or Azure) and the ability to obtain the issuer URI and subject/identity that PBM will use.

Copilot uses AI. Check for mistakes.

Choose a reason for hiding this comment

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

Recommendation is fundamentally wrong in the version. WIF support will be 2.13.0+ feature

## Prerequisites

Before running commands, make sure you have:

- A Google Cloud Storage (GCS) bucket created for PBM backups. If you don’t already have a bucket, follow the steps in the main GCS storage documentation: see [Create a bucket](gcs.md#create-a-bucket).

Check warning on line 32 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L32

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 32, "column": 12}}}, "severity": "WARNING"}

- PBM version 2.10.0 or higher

- A Google Cloud project (you need both):

Check warning on line 36 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L36

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 36, "column": 12}}}, "severity": "WARNING"}

- PROJECT_ID (string like my-gcp-project)

Check warning on line 38 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L38

[Google.FirstPerson] Avoid first-person pronouns such as 'my'.
Raw output
{"message": "[Google.FirstPerson] Avoid first-person pronouns such as 'my'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 38, "column": 31}}}, "severity": "WARNING"}

- PROJECT_NUMBER (numeric)

- An **external Identity Provider (IdP)** that can provide identity tokens (commonly OIDC)

- `gcloud` installed and authenticated as an admin who can create IAM resources

Check warning on line 44 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L44

[Google.WordList] Use 'administrator' instead of 'admin'.
Raw output
{"message": "[Google.WordList] Use 'administrator' instead of 'admin'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 44, "column": 46}}}, "severity": "WARNING"}


## Configuration steps

Follow these steps to configure Workload Identity Federation for PBM:
{.power-number}

1. Set your variables once:

```bash
# Required: your Google Cloud project ID (string)
export PROJECT_ID="my-gcp-project"

Check warning on line 56 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L56

[Google.FirstPerson] Avoid first-person pronouns such as 'my'.
Raw output
{"message": "[Google.FirstPerson] Avoid first-person pronouns such as 'my'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 56, "column": 20}}}, "severity": "WARNING"}

# Recommended: fetch the numeric project number automatically
export PROJECT_NUMBER="$(gcloud projects describe "$PROJECT_ID" --format="value(projectNumber)")"

# Workload Identity pool/provider IDs you are creating
export POOL_ID="pbm-pool"
export PROVIDER_ID="pbm-provider"

# Service account PBM will impersonate

Check warning on line 65 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L65

[Google.Will] Avoid using 'will'.
Raw output
{"message": "[Google.Will] Avoid using 'will'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 65, "column": 25}}}, "severity": "WARNING"}
export SA_NAME="pbm-backup-sa"
export SA_EMAIL="${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

# GCS bucket where PBM writes backups

Check warning on line 69 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L69

[Google.Headings] 'GCS bucket where PBM writes backups' should use sentence-style capitalization.
Raw output
{"message": "[Google.Headings] 'GCS bucket where PBM writes backups' should use sentence-style capitalization.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 69, "column": 5}}}, "severity": "WARNING"}
export BUCKET="my-backup-bucket"

Check warning on line 70 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L70

[Google.FirstPerson] Avoid first-person pronouns such as 'my'.
Raw output
{"message": "[Google.FirstPerson] Avoid first-person pronouns such as 'my'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 70, "column": 18}}}, "severity": "WARNING"}

# The external identity subject from your IdP (must match what your provider maps to google.subject)
# Example values depend on your IdP (OIDC 'sub' claim is most common).
export WORKLOAD_SUBJECT="YOUR_WORKLOAD_IDENTITY_SUBJECT"

# OIDC issuer URL for your IdP
export ISSUER_URI="https://YOUR-IDP.example.com"

```

Comment on lines 78 to 80
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

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

The closing code fence (```) is missing for the bash code block that starts at line 57. The next section starts at line 76 without closing the previous code block, which will cause rendering issues.

Suggested change

Copilot uses AI. Check for mistakes.
2. Create a Workload Identity pool:

```bash
gcloud iam workload-identity-pools create "$POOL_ID" \
--location="global" \
--display-name="PBM Workload Identity Pool"
```

3. Create a provider (OIDC Example):

This maps the IdP subject (`assertion.sub`) to Google’s `google.subject`.

The following example uses an OIDC provider (e.g., Kubernetes, GitHub Actions). For AWS, replace `--issuer-uri` with `--aws`.

Check failure on line 93 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L93

[Google.Latin] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Google.Latin] Use 'for example' instead of 'e.g.'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 93, "column": 50}}}, "severity": "ERROR"}

```bash
gcloud iam workload-identity-pools providers create-oidc "$PROVIDER_ID" \
--workload-identity-pool="$POOL_ID" \
--issuer-uri="$ISSUER_URI" \
--location="global" \
--attribute-mapping="google.subject=assertion.sub"
```

4. Create a service account for PBM backups. This service account will be impersonated by PBM when uploading backups to GCS.

Check warning on line 103 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L103

[Google.Will] Avoid using 'will'.
Raw output
{"message": "[Google.Will] Avoid using 'will'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 103, "column": 67}}}, "severity": "WARNING"}

```bash
gcloud iam service-accounts create $SA_NAME \
--display-name="PBM Backup Service Account"
```

5. Grant service account impersonation:

```bash
gcloud iam service-accounts add-iam-policy-binding "$SA_EMAIL" \
--role="roles/iam.workloadIdentityUser" \
--member="principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$POOL_ID/subject/$WORKLOAD_SUBJECT"
```
**Where:**

**PROJECT_ID →** Your Google Cloud project ID (string, e.g., `my-gcp-project`).

Check warning on line 119 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L119

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 119, "column": 34}}}, "severity": "WARNING"}

Check failure on line 119 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L119

[Google.Latin] Use 'for example' instead of 'e.g.'.
Raw output
{"message": "[Google.Latin] Use 'for example' instead of 'e.g.'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 119, "column": 60}}}, "severity": "ERROR"}

**PROJECT_NUMBER →** The numeric project identifier (find with `gcloud projects describe PROJECT_ID --format="value(projectNumber)"`).

**WORKLOAD_ID →** The identity subject from your IdP that PBM uses (for example, a Kubernetes service account name or GitHub Actions workflow ID).

Check warning on line 123 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L123

[Google.WordList] Use 'username' instead of 'account name'.
Raw output
{"message": "[Google.WordList] Use 'username' instead of 'account name'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 123, "column": 107}}}, "severity": "WARNING"}

**YOUR-IDP →** The issuer URI of your identity provider, i.e. the value you used for the `--issuer-uri` flag in step 3 (for example, `https://accounts.google.com` for Google, or your OIDC provider URL).

Check failure on line 125 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L125

[Google.Latin] Use 'that is' instead of 'i.e.'.
Raw output
{"message": "[Google.Latin] Use 'that is' instead of 'i.e.'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 125, "column": 62}}}, "severity": "ERROR"}

6. Assign GCS permissions:

```bash
gcloud projects add-iam-policy-binding "$PROJECT_ID" \
--member="serviceAccount:$SA_EMAIL" \
--role="roles/storage.objectAdmin"
```

Ensure that the bucket has the proper [permissions for PBM to use the bucket](storage-configuration.md#permissions-setup).

7. Generate and configure the Workload Identity credential configuration file:

For environments that do not provide credentials via a metadata server (for example, on‑premises, GitHub Actions, or other external IdPs), create a Workload Identity Federation credential configuration file and make it available to PBM as Application Default Credentials (ADC).

1. **Generate the credential configuration file:**

```bash
gcloud iam workload-identity-pools create-cred-config \
projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$POOL_ID/providers/PROVIDER_ID\
--service-account="$SA_EMAIL" \
--output-file="pbm-wif-cred.json"
```

2. **Make the file available to PBM:**

Place `pbm-wif-cred.json` on the host or container where PBM runs, and set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable so that PBM (via Google Cloud SDK) can pick it up as ADC:

Check warning on line 152 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L152

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 152, "column": 166}}}, "severity": "WARNING"}

```bash
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/pbm-wif-cred.json"
```

Ensure this environment variable is set in the context where PBM commands run (for example, in the PBM container spec, systemd unit, or shell session).

Check warning on line 158 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L158

[Vale.Spelling] Did you really mean 'systemd'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'systemd'?", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 158, "column": 128}}}, "severity": "WARNING"}

Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

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

The configuration file template reference is missing. Following the established pattern in other storage documentation (gcs.md, azure.md, s3-storage.md, minio.md), you should add a sentence before the configuration section that reads: "You can find the configuration file template :octicons-link-external-16: and uncomment the required fields."

Suggested change
You can find [the configuration file template :octicons-link-external-16:](https://github.com/percona/percona-backup-mongodb/blob/v{{release}}/packaging/conf/pbm-conf-reference.yml) and uncomment the required fields.

Copilot uses AI. Check for mistakes.
8. PBM configuration:
When using Workload Identity, omit the credentials block in the PBM configuration. The Google Cloud SDK (used by PBM 2.10+) will automatically detect the environment's identity.

Check warning on line 161 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L161

[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.
Raw output
{"message": "[Google.WordList] Use 'Google Cloud Platform' or 'GCP' instead of 'Cloud'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 161, "column": 99}}}, "severity": "WARNING"}

Check warning on line 161 in docs/details/workload-identity-authentication.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/details/workload-identity-authentication.md#L161

[Google.Will] Avoid using 'will'.
Raw output
{"message": "[Google.Will] Avoid using 'will'.", "location": {"path": "docs/details/workload-identity-authentication.md", "range": {"start": {"line": 161, "column": 129}}}, "severity": "WARNING"}

1. **Create config file:**
Create a file named `pbm_config.yaml`:

```yaml
storage:
type: gcs
gcs:
bucket: <YOUR_BUCKET_NAME>
prefix: <YOUR_PREFIX>
# No credentials block here!
# PBM will use the ambient Workload Identity.
```

2. Apply the config:

```bash
pbm config --file pbm_config.yaml
```
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

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

Consider adding a reference to the standard configuration options documentation. Following the pattern in other storage configuration files (azure.md:82, s3-storage.md:57, filesystem-storage.md:25), add: "For the description of configuration options, see Configuration file options." This helps users understand all available configuration parameters beyond what's shown in the example.

Copilot uses AI. Check for mistakes.

??? example "Example PBM configuration file"
```yaml
storage:
type: gcs
gcs:
bucket: my-backup-bucket
prefix: pbm
```



Comment on lines +191 to +192
Copy link

Copilot AI Feb 19, 2026

Choose a reason for hiding this comment

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

The note mentions setting GOOGLE_APPLICATION_CREDENTIALS environment variable, but doesn't provide instructions on how to do this for PBM agents. Consider adding a brief example or reference on how to set this environment variable for pbm-agent processes, similar to how other configuration documents provide complete setup instructions. This is especially important since the note says "you must set" this variable.

Suggested change
**Example (Linux / systemd service):**
```bash
export GOOGLE_APPLICATION_CREDENTIALS=/etc/pbm/credential-configuration.json
pbm-agent ...
```
**Example (Kubernetes pbm-agent Pod):**
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pbm-agent
spec:
template:
spec:
containers:
- name: pbm-agent
image: percona/pbm:latest
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /etc/pbm/credential-configuration.json
volumeMounts:
- name: pbm-credentials
mountPath: /etc/pbm
volumes:
- name: pbm-credentials
secret:
secretName: pbm-wif-credentials
```

Copilot uses AI. Check for mistakes.
1 change: 1 addition & 0 deletions mkdocs-base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ nav:
- AWS storage: details/s3-storage.md
- details/minio.md
- details/gcs.md
- Workload Identity authentication: details/workload-identity-authentication.md
- details/azure.md
- details/oss.md
- details/filesystem-storage.md
Expand Down