Connect your stack

Connect your cloud

Give Veriom a read-only view of an AWS account, Azure subscription, or Google Cloud project with quick-connect. No keys are created or stored.

This page is for a workspace admin who wants Veriom to see what runs in a cloud account. Quick-connect creates a read-only identity in your cloud. A daily GitHub Actions job then sends Veriom a list of your resources. Veriom never holds a cloud key.

Before you start

  • You have the Admin or Owner role in the workspace.
  • One GitHub repository is connected through the Veriom GitHub App. Its CI runs the collection job. See Connect a repository.
  • You can create IAM roles in the AWS account, role assignments in the Azure subscription, or service accounts in the Google Cloud project.
  • The workspace has fewer than 25 cloud connections.

Connect a cloud account

  1. In Veriom, open Integrations and select the Cloud tab.

  2. In Cloud provider, choose AWS, Azure, or Google Cloud.

  3. In the Quick-connect card, choose the Repository whose CI collects it.

  4. Click Connect AWS, Connect Azure, or Connect Google Cloud. Confirm your identity if Veriom asks.

  5. Veriom shows setup links and a command. Use one of them:

    ProviderFastest optionAlso available
    AWSOpen in the AWS console, or My account already trusts GitHub if the account already has GitHub's OIDC providerA command for AWS CloudShell
    AzureA command for Azure Cloud ShellDeploy to Azure
    Google CloudA command for Google Cloud Shell
  6. Wait for the status to change from Waiting for the identity to Connected.

The setup links and the command work once and expire after 24 hours. If they expire, click New setup links.

If you used Deploy to Azure, the portal cannot report back to Veriom. Click Enter the outputs, paste the tenant_id, subscription_id, and client_id from the deployment outputs, and click Finish connecting.

Merge the collection workflow

When the connection is ready, Veriom opens a draft pull request in the repository you chose. It adds one workflow file, .github/workflows/veriom-cloud-<provider>-<id>.yml.

  1. Open the pull request on GitHub and review it.
  2. Merge it.

For an AWS account, the workflow looks like this. Veriom fills in your account, role, region, workspace, and a daily time:

.github/workflows/veriom-cloud-aws-<id>.yml
name: "Veriom cloud inventory (AWS account 123456789012)"
on:
  schedule:
    - cron: "17 4 * * *"
  workflow_dispatch:
  push:
    branches: ["main"]
    paths: [".github/workflows/veriom-cloud-aws-<id>.yml"]
permissions:
  contents: read
  id-token: write
concurrency:
  group: veriom-cloud-aws-<id>
  cancel-in-progress: false
jobs:
  collect:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - name: Assume the read-only role
        uses: aws-actions/configure-aws-credentials@v5
        with:
          role-to-assume: "<ARN of the role quick-connect created>"
          aws-region: "us-east-1"
      - name: Collect inventory for Veriom
        uses: Veriom/actions/cloud-collector@v2
        with:
          provider: "aws"
          region: "us-east-1"
          api-url: "https://api.veriom.ai"
          workspace-id: "7f3c9a52-1b4e-4d8a-9c61-2e5f0a7b8d13"

Azure workflows sign in with azure/login, and Google Cloud workflows with google-github-actions/auth. No cloud key or Veriom token is stored in the repository.

If Veriom could not open the pull request, the connection still shows Connected with a Propose the workflow button. Click it to try again.

The workflow runs once when it lands, then once a day, and whenever you start it by hand. It signs in to your cloud with GitHub's OIDC token, collects the inventory, and sends it to Veriom. The connection card shows the time of the last snapshot.

What quick-connect creates in your cloud

Every identity trusts only GitHub Actions runs from the default branch of the repository you chose. Nothing else can use it.

ProviderWhat is createdPermissions
AWSAn IAM role, CollectorRole. GitHub's OIDC provider, unless the account has one. A small Lambda function that reports the role back to Veriom once.tag:GetResources, ec2:DescribeVpcs
AzureA resource group, veriom-collector, holding a managed identity, veriom-<id>, with a federated credential for GitHubCustom role Veriom collector reader: Microsoft.Resources/subscriptions/read and Microsoft.Resources/subscriptions/resources/read on the subscription
Google CloudA workload identity pool, veriom-github, a provider, and a service account, veriom-<id>Custom role veriomCollector: cloudasset.assets.searchAllResources, resourcemanager.projects.get

What Veriom receives

The collector reads your resource list with read-only calls and sends Veriom:

  • up to 500 resources, each with its ID or ARN, name, type, category, region, and a short list of allowed properties;
  • up to 1,000 relationships between those resources.

It does not read data inside resources, secrets, or logs.

Stop collecting

Veriom has no disconnect button yet. To stop collection:

  1. Delete the veriom-cloud-*.yml workflow file from the repository.
  2. Delete the identity that quick-connect created in your cloud (see the table above).

If something goes wrong

Message or codeWhat it meansFix
cloud_connection_limitThe workspace already has 25 cloud connectionsRemove a connection you no longer use
cloud_connect_callback_invalidThe setup link was used, expired, or is unknownClick New setup links and run the new command
cloud_connection_outputs_invalidAn Azure output is not a valid IDCopy tenant_id, subscription_id, and client_id again from the deployment outputs
cloud_connection_subject_changedThe repository was renamed or its default branch changedStart a new connection
cloud_connection_requiredA snapshot came from a repository or account with no ready connectionFinish the connection first, or check that the workflow runs in the repository you chose
cloud_connection_not_pendingThe connection is already connected or revokedRefresh the page

See Troubleshooting for more codes.

Was this guide useful?

Your response stays in this browser unless you open a GitHub issue.
View source