28. Cloud providers (AWS, GCP, Azure)
Chapter 7 walked through the first-time AWS setup with detailed hand-holding. This chapter is the reference: every cloud provider, every credential option, and what each gives you.
AWS
Setup
Pattern: cross-account IAM role with External ID. Chapter 7 has the step-by-step.
Capabilities
- Inventory: EC2, RDS, S3, Lambda, ECS/EKS clusters, CloudFront, Route53, ELB/ALB/NLB, Auto Scaling Groups, IAM users and roles (read-only).
- Cost: Pulled from Cost Explorer API; daily granularity, per-service / per-region / per-tag breakdowns.
- Investigation tools (Assistant): describe-instance, list-functions, get-log-events (CloudWatch), get-metrics.
- Action tools (write only): restart-ecs-service, scale-asg, terminate-instance, update-launch-template, restart-rds- instance. Each gated on a proposal.
Permissions
- Minimum read-only: AWS-managed
ReadOnlyAccess. - Recommended read-only: custom policy at
https://docs.daalu.io/aws-minimum-policy.json(smaller surface area, same coverage). - Read-write add-on: separate role with the actions you want the Assistant to perform.
Regions
The wizard asks for a list of regions to scope to. Defaults to all enabled regions. Add or remove later from the integration detail page.
Troubleshooting
- AccessDenied on AssumeRole — External ID missing from trust policy, or Daalu account ID typoed.
- AccessDenied on individual APIs — role policy doesn’t grant the action. Widen the policy or use ReadOnlyAccess.
- Throttled — Daalu retries with backoff; if it persists, AWS has per-account rate limits you may be hitting.
GCP
Setup
Pattern: workload identity federation with a Google service account.
- Create a service account in your GCP project.
- Grant it
roles/viewerfor read-only access; add other roles for write capabilities. - Add Daalu’s service account as a member with
roles/iam.workloadIdentityUser. - Paste the service-account email and project ID into Daalu.
Capabilities
- Inventory: Compute Engine, Cloud SQL, GCS, GKE clusters, Cloud Functions, Cloud Run services, Load Balancers, DNS zones.
- Cost: Pulled from Cloud Billing API.
- Tools: Equivalent to AWS — describe, list, scale, restart.
Per-project vs organization-wide
For multi-project orgs, two options:
- Add each project separately. Tidy but tedious.
- Add one “platform” service account with org-wide viewer. Less granular but easier to operate.
Troubleshooting
- “Project not found” — the SA can’t see the project. Check IAM bindings.
- “Permission denied” — same as above but for a specific resource type. Add the needed role.
Azure
Setup
Pattern: app registration with federated workload identity.
- Register an app in Azure AD.
- Add a federated credential whose issuer is Daalu’s IdP and whose subject is your tenant string.
- Assign Reader role at the subscription level.
- Paste app ID, tenant ID, and subscription ID into Daalu.
Capabilities
- Inventory: Compute, Storage, SQL DB, Azure Functions, AKS, App Service, Front Door.
- Cost: Pulled from Cost Management API.
- Tools: Equivalent surface area to AWS.
Scope: subscription vs management group
If you have many subscriptions, grant Reader at the management-group level for unified visibility. Per-subscription is fine if you want each scoped separately.
Troubleshooting
- “InvalidAuthenticationToken” — federated credential misconfigured. Compare issuer and subject to what Daalu showed in the wizard.
- “AuthorizationFailed” — RBAC doesn’t have Reader.
Adding write access
The recommended pattern for all three clouds:
- Start read-only.
- Get comfortable with what Daalu sees and how the Assistant uses it.
- Add a separate write-capable role/SP as a second integration.
- The Assistant detects both and uses each appropriately.
Disconnection
Two-step revocation:
- Managed Infra → Cloud Accounts → row → Disconnect. Daalu stops calling immediately.
- In your cloud, delete the role / SA / SP. Belt and braces.
Existing inventory and cost data ages out after 30 days.
What’s next
Chapter 29 covers notification integrations — Slack, PagerDuty, email.