wif.tax

Drata

C Drata platform

Workloads call the Drata API with a static API key or an OAuth client_credentials app whose client secret mints 24-hour tokens; there is no federation, so a long-lived secret always sits at the root. Keys are scoped and show last use, but Never is an allowed expiry, keys cannot be managed by API and GitHub does not revoke leaked ones. Into AWS Drata assumes a role with an external ID; GCP needs a service account JSON key and Azure a client secret.

Docs: help.drata.com · Checked 2026-10-22 · source YAML · dispute via PR

Inbound C

How a workload running anywhere authenticates to this product.

OAuth 2.0 client credentials against Drata's Auth0 tenant: an OAuth Application created in Settings yields a client ID and client secret that mint short-lived bearer tokens for the Public API v2 (and the MCP server). The alternative is a static API key sent as a bearer token.

Graded C: the OAuth path issues tokens that expire (the documented example returns expires_in 86400), but every token is bootstrapped from a client secret Drata generates and you store, and the API spec documents only the clientCredentials flow and a static bearer API key. No token exchange, private_key_jwt, OIDC trust of GitHub Actions or cloud workload tokens, or any bring-your-own-issuer option is documented, so per the brief's precedent a client_credentials secret is C at best. The MCP server uses a per-user interactive OAuth grant, which is human login rather than workload auth. Not tier-gated in the docs, though Drata pitches OAuth Applications at enterprise customers. Moves to B or A only if Drata accepts federated tokens from an external OIDC issuer.

Outbound B

How this product reaches into your cloud, repos, or other SaaS.

AWS (and AWS GovCloud) is keyless: you create DrataAutopilotRole trusting Drata's account with your tenant's external ID. GCP requires uploading a service account JSON key, and Azure requires a client secret on an App Registration you create. GitHub, Bitbucket, GitLab, Azure DevOps, Google Workspace and DigitalOcean connect through Drata's own app or OAuth grant; Okta, JumpCloud, Cloudflare and Snowflake take tokens or client secrets you create.

Checked: AWS, AWS GovCloud, GCP (manual and script setup), Azure, GitHub, GitHub Enterprise Server, GitLab, Bitbucket, Azure DevOps, Google Workspace, Okta, JumpCloud, DigitalOcean, Cloudflare and Snowflake help articles, plus the v2 API's aws-, azure- and gcp-connections endpoints. AWS is keyless (cross-account role with a per-tenant external ID and the SecurityAudit policy). GCP is a static service account JSON key, held by Drata and also needing domain-wide delegation into Google Workspace; Azure is a customer-managed client secret on a single-tenant App Registration (the guide suggests a 24-month expiry and warns expiry disconnects the integration). Neither offers workload identity federation, service account impersonation or a federated credential, which is why this is B rather than A. Both come with read-only least-privilege role guidance (Reader, SecurityAudit, a reduced-permission GCP custom role). Okta takes an admin API token plus an OIN app client secret, JumpCloud and Cloudflare take API keys or tokens, Snowflake an OAuth client secret, DigitalOcean Spaces optional static access keys and GitLab an optional PAT. GitHub, Bitbucket and GitHub Enterprise Server use a Drata app you install; GitLab, Azure DevOps, Google Workspace and DigitalOcean use an interactive OAuth grant. Moves to A if GCP and Azure gain keyless options (WIF or SA impersonation; a federated credential on a Drata multi-tenant app).

Hygiene for any static credential the product still issues

✗ Expiry enforceable
API keys default to 12 months and OAuth Applications offer Never or Custom, but Never is allowed for both and no org policy to forbid it is documented. A changeable default is not an enforced expiry (precedent from this cohort's brief), so this fails.
  • help.drata.com checked 2026-10-22
    “The following options are 12 months, Never, or Custom. The default is 12 months.”
  • help.drata.com checked 2026-10-22
    “Custom (recommended for most customers)”
✗ Rotation via API
Keys and OAuth Applications are created and revoked in Settings in the web app. The v2 OpenAPI spec (159 paths) has no endpoint for API keys, OAuth Applications or client secret rotation, so rotation cannot be automated without a browser.
  • developers.drata.com checked 2026-10-22
    “Please visit our help article to learn how to create an API key.”
  • help.drata.com checked 2026-10-22
    “Select the Create API Key button.”
✓ Scoped keys
Both API keys and OAuth Applications are tenant-level integration credentials with per-resource read/create/update/delete scopes, not a copy of the creator's access. Keys can also be pinned to allowed source IPs. The "All read" and "All read and write" presets auto-grow to future scopes.
  • help.drata.com checked 2026-10-22
    “Custom: Select the specific scopes you want enabled for that API key.”
  • help.drata.com checked 2026-10-22
    “Best practice: Always follow least privilege — only enable the minimum scopes needed for your integration.”
✓ Last-used visible
Shown for API keys. A last-used field for OAuth Applications is not documented.
  • help.drata.com checked 2026-10-22
    “You can view the API key name, the status of the key, who created the API key, when the key was last used to make a request, and when the key expires.”
✗ Leak revocation
Drata does not appear in GitHub's supported secret-scanning patterns table, so neither API keys nor OAuth client secrets leaked to a public repo are reported to Drata.

Notes

One card for the Drata GRC platform. SafeBase (Drata's trust-center product) has its own Trust API not graded here; Custom Connections push data in over the same Public API and credentials. Two of five hygiene checks pass (scoping, last used). An enforceable maximum expiry, key and OAuth Application management in the API, and GitHub secret-scanning partnership would fix hygiene; inbound needs real federation to pass C, and outbound needs keyless GCP and Azure to reach A.

Badge

wif.tax grade C

[![wif.tax grade](https://wif.tax/badge/drata.svg)](https://wif.tax/p/drata/)