Day 1 Wrap-up — Identity as the First Perimeter
Day 1 Wrap-up — Identity as the First Perimeter
Today we started with identity because identity is often the first security boundary in cloud environments.
Before looking at networks, storage, APIs or compliance, we need to know:
Who or what can do what?What we covered
Today you worked through this cycle:
Main lessons
1. Workload identities are powerful
A managed identity is not a person, but it can still have permissions.
If an attacker controls the workload, they may be able to use those permissions.
2. Scope changes risk
A role may be acceptable at one scope and dangerous at another.
Contributor on one test resourceis very different from:
Contributor on a full resource group3. Broad access is not correct access
The backend identity had broad management access, but still lacked the correct data-plane access for Key Vault.
This is the core lesson from Lab 1.2:
too much access in one place
does not mean
the right access in the correct place4. Least privilege must be tested
A good fix should prove two things:
The legitimate application flow still works.
The risky action is blocked.In this case:
| Test | Desired outcome |
|---|---|
| Backend reads required secret | Works |
| Backend modifies unnecessary Azure resource metadata | Fails |
5. Zero Trust is a design habit
Zero Trust is not only a product.
It is a way of thinking about access:
explicit
limited
verified
monitored
removableFinal Day 1 model
Reflection questions
Discuss briefly:
- Which permission was too broad?
- Why was the scope important?
- What did the backend actually need?
- Why did Contributor not solve the Key Vault secret access?
- How did the fix reduce risk?
- What would you monitor after applying this fix?
Split Responsibility (Dev Vs SecOps)
A common production pattern is to split responsibility between teams and Terraform states.
For example, a development team may manage non-persistent resources such as App Services, deployments, temporary test resources, or application configuration. These resources can usually be recreated or changed more frequently.
A SecOps or platform team may manage persistent and security-sensitive resources such as Key Vaults, identities, role assignments, logging workspaces, policies, and shared networking. These resources are more sensitive because they protect data, control access, or are used by multiple applications.
In that model, both teams can use Terraform, but they do not manage the same state file:
dev-app.tfstate → application and non-persistent resources
secops-core.tfstate → persistent resources and access controlThis separation reduces the need for the development deployment identity to manage security-critical permissions directly. It also creates a clearer ownership boundary: developers can deploy the application, while SecOps controls the long-lived resources and the permissions around them.
Bridge to Day 2
Today we reduced who can control the environment.
Tomorrow we look at what is exposed:
- public access
- network boundaries
- storage exposure
- encryption
- remaining attack paths
Identity is only the first layer.
The next question is:
Even with better access control, what is still reachable?
Day 1 Challenge
If time allows we have a challenge: Click me!