Skip to main content

How It Works

  1. Permissions
    a. Register an application
    1. Sign in to the Azure Portal and search for Microsoft Entra ID. Search Microsoft Entra ID
    2. In the left menu open Manage → App registrations. App registrations menu
    3. Click + New registration, give it a name (e.g. codeant-cspm), leave the defaults, and click Register.
    b. Create a client secret
    1. In the app registration’s left menu, open Manage → Certificates & secrets. Certificates & secrets
    2. Click + New client secret, set an expiry, and click Add. Copy the secret Value immediately - it is only shown once. New client secret
    c. Grant Microsoft Graph permissions
    1. In the app registration’s left menu, open Manage → API permissions.
    2. Click + Add a permission, choose Microsoft Graph, then Application permissions. Microsoft Graph application permissions
    3. Search for and tick: AuditLog.Read.All, Directory.Read.All, Policy.Read.All. Click Add permissions. Select permissions
    4. Click Grant admin consent for <tenant>, then Yes. Each permission’s status should turn green.
    d. Assign the Reader role on the subscription
    1. In the Azure Portal top search bar, type Subscriptions and click the first plain Subscriptions result under Services (not Billing subscriptions or the Resource Manager variant).
    2. From the list, click the subscription you want CodeAnt to scan. (If you have many subscriptions, repeat this step for each one.)
    3. In the left menu of the subscription blade, click Access control (IAM).
    4. Click + Add at the top of the page, then choose Add role assignment from the dropdown.
    5. On the Role tab, search for Reader, select the Reader row, and click Next. Add Reader role
    6. On the Members tab, leave Assign access to as User, group, or service principal, then click + Select members.
    7. In the Select members panel on the right, type codeant-cspm (or the exact name you used in step a.3) into the search box, click the matching application in the results, and click Select at the bottom.
    8. Click Next until you reach the Review + assign tab, then click Review + assign to commit.
    e. Collect the credentialsFrom the app registration Overview page copy the Application (client) ID and Directory (tenant) ID. Use these together with the client secret from step b in the next section. (The Subscription ID, found on the subscription’s Overview page, isn’t part of the saved credential - it’s only used for the optional validation probe in step 2.)
  2. Settings
    • In the CodeAnt UI navigate to Settings → Cloud Security → Azure.
    • Under Azure Credentials, fill in Directory (tenant) ID, Application (client) ID, and Azure Client Secret, then click Save in the top right.
    • (Optional) Under Validate against subscription, paste a Subscription ID and click Validate to confirm the service principal can read that subscription. A green confirmation means the Reader role is assigned and resources are listable; it does not test the Graph permissions, so make sure admin consent in step 1c really turned green. The Subscription ID is not stored - it is only used for this probe.
    • Cloud Security – Azure form
  3. Start a Scan
    • Go to Cloud Security -> Start a New Scan and pick your Azure connection.
    • Within 15-20 minutes, the scan will be completed, and you will see the results.

Optional: cover two extra App Service checks

The built-in Reader role misses two read actions that a pair of App Service checks (app_function_access_keys_configured, app_function_ftps_deployment_disabled) need. To include them, create a small custom role and assign it alongside Reader:
  1. On the subscription’s Access control (IAM) page choose + Add → Add custom role, pick Start from JSON, and upload this file with your subscription ID filled in:
  1. Assign the new role to codeant-cspm the same way as Reader.

VM Scanning permissions

VM Scanning reuses this same service principal but needs the Microsoft.Compute/snapshots/* actions, which Reader does not grant - it creates a temporary disk snapshot, reads it, and deletes it. Assign the built-in Disk Snapshot Contributor role to the CSPM app alongside Reader (Reader is still needed to read the source disk):
  1. Open the subscription → Access control (IAM)+ Add → Add role assignment.
  2. On the Role tab, search for Disk Snapshot Contributor, select it, and click Next.
  3. On the Members tab, click + Select members, choose your CSPM app (e.g. codeant-cspm), and click Select.
  4. Click Review + assign. Repeat for each subscription you want VM Scanning to cover.
Without this role the scan fails when creating the snapshot, returning 403 Forbidden on a PUT .../providers/Microsoft.Compute/snapshots/... request.