Security & Azure Permissions

Everything your IT team needs to know before granting access.

TL;DR for IT Admins

  • 1 permission requested: user_impersonation on the Azure Resource Manager API
  • Read-only in practice: the app reads resource metadata, metrics, and costs โ€” it never creates, deletes, or modifies resource configurations
  • Optional write: start/stop VMs and databases only when explicitly triggered by the user via the scheduling feature
  • No Graph API access: we don't read your Active Directory, emails, or files
  • EU-only infrastructure: all data is processed and stored in Sweden (EU)
  • Data deletion: users can delete all their data at any time from the Account page

Permission Requested

ScopeAPITypeConsent
user_impersonationAzure Resource ManagerDelegatedAdmin or User (depends on tenant policy)
offline_accessMicrosoft IdentityDelegatedUser

We do not request any Microsoft Graph permissions (no access to emails, files, Active Directory, or user management).

What We Read (and Why)

Subscriptions

List your accessible subscriptions and their display names.

GET /subscriptions

Why: to let you choose which subscriptions to scan.

Resource Inventory (Azure Resource Graph)

Query resource metadata โ€” types, SKUs, locations, configurations. We detect orphaned/unused resources like unattached disks, idle load balancers, deallocated VMs, etc.

POST /providers/Microsoft.ResourceGraph/resources

Why: this is the core of the audit โ€” finding resources that cost money but aren't being used.

Metrics (Azure Monitor)

Read CPU, memory, disk I/O, network, and DTU utilization metrics over the last 7โ€“30 days.

GET /{resourceId}/providers/microsoft.insights/metrics

Why: to identify oversized VMs, databases, and App Service plans that can be downsized.

Cost Data (Cost Management)

Query your last month's spend per subscription (aggregate totals, no line-item details).

POST /subscriptions/{id}/providers/Microsoft.CostManagement/query

Why: to show spend trends and prioritize optimization recommendations by cost impact.

Reservations

List reservation orders and their utilization rates (7-day and 30-day averages).

GET /providers/Microsoft.Capacity/reservationOrders

Why: to detect unused or underutilized reservations that represent wasted commitment spend.

Log Analytics

Query workspace ingestion volumes (per-table breakdown, daily trends). We do not read log contents.

POST /{workspaceId}/api/query

Why: to identify noisy tables driving up your Log Analytics bill.

Azure Retail Prices (public API)

Fetch public pricing for VMs, disks, SQL, and other services. This API is public and requires no authentication.

GET https://prices.azure.com/api/retail/prices

Why: to calculate potential savings when recommending a resize or tier change.

What We Can Write (Optional, User-Triggered Only)

The scheduling feature allows users to start/stop resources on a schedule to save costs. These actions are never automatic โ€” they require explicit user configuration and can be disabled at any time.

Additional setup required: Start/stop actions โ€” and any operation beyond read-only โ€” require the Contributor role to be assigned on the target resources or resource group. The default Reader role used for audits does not grant write permissions. You must explicitly configure this additional role in Azure before using the scheduling feature.

Resource TypeActionsAPI Version
Virtual MachinesStart, Deallocate2024-03-01
VM Scale SetsStart, Deallocate2024-03-01
AKS ClustersStart, Stop2024-01-01
MySQL Flexible ServerStart, Stop2023-06-30
PostgreSQL Flexible ServerStart, Stop2023-06-30
Container InstancesStart, Stop2024-03-01
Synapse SQL PoolsResume, Pause2024-03-01
Fabric CapacitiesResume, Suspend2024-03-01

We never create, delete, resize, or modify the configuration of any Azure resource.

What We Don't Do

  • โœ• Access your Active Directory, users, groups, or roles
  • โœ• Read emails, files, or SharePoint data
  • โœ• Create, delete, or reconfigure Azure resources
  • โœ• Read log contents (only ingestion volumes)
  • โœ• Access Key Vaults, secrets, or certificates
  • โœ• Store your Azure credentials (tokens are encrypted with AES-256-GCM and auto-expire)
  • โœ• Share or sell your data to third parties

Data Handling

Storage

  • MongoDB Atlas โ€” Stockholm, Sweden (EU)
  • Backend servers โ€” Fly.io Stockholm (EU)
  • No data leaves the EU

Encryption

  • In transit: TLS 1.2+ everywhere
  • At rest: AES-256-GCM for tokens
  • Sessions expire after 24 hours

Retention

  • Audit reports: kept until user deletes
  • Tokens: auto-expire, deleted on logout
  • Analytics: anonymized aggregates only

Deletion

  • Self-service: Account page โ†’ "Delete all my data"
  • Or email: contact@cloudiceberg.com
  • Personal data erased, anonymized stats retained

Granting Access (For IT Admins)

If your organization requires admin consent for third-party applications, an Azure AD administrator can approve Cloud Iceberg for all users in the tenant:

  1. Go to Azure Portal โ†’ Entra ID โ†’ Enterprise Applications
  2. Search for "Cloud Iceberg" (or the app's Client ID)
  3. Click Permissions โ†’ Grant admin consent
  4. Review the permission (user_impersonation on Azure Management) and approve

After admin consent, users in your tenant can sign in without any additional approval prompt.

Need help? Contact us at contact@cloudiceberg.com โ€” we're happy to join a quick call with your IT team.

Minimum Azure Role Required

Cloud Iceberg works with the Reader role on the subscriptions you want to scan. No Contributor or Owner access is needed for the audit. The scheduling feature (start/stop) requires Contributor on the specific resources to manage.

FeatureMinimum RoleScope
Audit / Optimization scanReaderSubscription
Cost analysisCost Management ReaderSubscription
Reservation insightsReaderTenant (reservation orders)
Scheduling (start/stop)ContributorResource or Resource Group

Sub-Processors

Complete list of third-party services that process data on our behalf:

ProviderPurposeData ProcessedLocationDPA
Microsoft Entra IDAuthentication (OAuth 2.0)Name, email, tenant IDEU / GlobalView DPA
Microsoft AzureResource & cost data sourceResource metadata, metrics, costsYour Azure regionsView DPA
Microsoft TeamsWebhook notifications (optional)Audit summaries, resource alertsYour Teams tenantView DPA
MongoDB AtlasDatabaseUser profiles, audit reports, sessionsStockholm, Sweden (EU)View DPA
Fly.ioBackend hostingAPI requests, application logsStockholm, Sweden (EU)View DPA
NetlifyFrontend hostingStatic assets only (no user data)EU CDNView DPA
StripePayment processingEmail, name (card details handled by Stripe)EUView DPA
MailgunTransactional emailsEmail address, audit summariesEUView DPA
PostHogProduct analyticsUsage events, anonymized metricsEUView DPA

Data Flow Architecture

How data flows through Cloud Iceberg โ€” no data leaves the EU.

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      OAuth 2.0       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ  โ”‚  Microsoft       โ”‚
โ”‚   Your       โ”‚  โ—„โ”€โ”€โ”€ token โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚  Entra ID        โ”‚
โ”‚   Browser    โ”‚                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚              โ”‚
โ”‚              โ”‚      HTTPS           โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ  โ”‚  Cloud Iceberg API               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ—„โ”€โ”€ JSON โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”‚  Fly.io โ€” Stockholm, Sweden (EU) โ”‚
                                      โ”‚                                  โ”‚
                                      โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”        โ”‚
                                      โ”‚  โ”‚ MongoDB Atlas        โ”‚        โ”‚
                                      โ”‚  โ”‚ Stockholm (EU)       โ”‚        โ”‚
                                      โ”‚  โ”‚ ยท User profiles      โ”‚        โ”‚
                                      โ”‚  โ”‚ ยท Audit reports      โ”‚        โ”‚
                                      โ”‚  โ”‚ ยท Encrypted tokens   โ”‚        โ”‚
                                      โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜        โ”‚
                                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                  โ”‚
                                                  โ”‚ Read-only API calls
                                                  โ”‚ (user's own token)
                                                  โ–ผ
                                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                      โ”‚  Azure Resource       โ”‚
                                      โ”‚  Manager API          โ”‚
                                      โ”‚  ยท Resource Graph     โ”‚
                                      โ”‚  ยท Monitor Metrics    โ”‚
                                      โ”‚  ยท Cost Management    โ”‚
                                      โ”‚  ยท Reservations       โ”‚
                                      โ”‚  ยท Log Analytics      โ”‚
                                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜           

Frequently Asked Questions

Can Cloud Iceberg delete or modify my Azure resources? +

No. Cloud Iceberg is read-only by default. The only write operations are start/stop actions on VMs and databases, which require you to explicitly set up a schedule. We never create, delete, resize, or reconfigure any resource.

Can other users in my organization see my data? +

No. Each user's data is scoped to their own account. There is no shared workspace or cross-user visibility. Audit results are tied to the Azure identity that ran the scan.

What happens if I revoke access? +

You can revoke Cloud Iceberg's access at any time from Entra ID โ†’ Enterprise Applications or from your Microsoft My Apps page. Once revoked:

  • Existing tokens immediately stop working
  • Scheduled automations stop executing
  • You can also delete all stored data from the Account page
Do you store my Azure credentials? +

We never store your Azure password. We store a refresh token (issued by Microsoft) encrypted with AES-256-GCM on our EU servers. This token allows scheduled scans to run on your behalf. It auto-expires after 24 hours and is deleted when you log out.

Why does the app need admin consent in my organization? +

Some organizations restrict third-party app access and require an Azure AD administrator to approve the app first. This is a tenant-level policy, not a Cloud Iceberg requirement. Once an admin grants consent, all users in the tenant can sign in without further approval. See the admin consent section above for step-by-step instructions.

Does Cloud Iceberg read my log data or application secrets? +

No. For Log Analytics, we only query ingestion volumes (how much data each table generates) to help you reduce costs. We never read actual log entries, Key Vault secrets, certificates, or application data.

Is Cloud Iceberg GDPR compliant? +

Yes. All infrastructure is EU-based (Sweden), we practice data minimization, and you can exercise your GDPR rights (access, rectification, erasure, portability) at any time from the Account page or by emailing contact@cloudiceberg.com. See our Privacy Policy for full details.

What Azure role does the user need? +

The Reader role on the subscriptions you want to scan is sufficient for the audit. Cost data requires Cost Management Reader. The scheduling feature (start/stop) requires Contributor on the specific resources.

Security Track Record

0 security incidents since launch. We proactively monitor for vulnerabilities and follow security best practices including encrypted storage, minimal permissions, and automatic token expiration.

If you discover a security issue, please report it to contact@cloudiceberg.com.

See also: Privacy Policy ยท Terms of Service

We use cookies for analytics (PostHog) to improve the product. No advertising, no third-party tracking. Privacy Policy