🚨 CMMC Phase One started November 10! Here's everything you need to know →

How to configure IAM policies to satisfy FAR 52.204-21 / CMMC 2.0 Level 1 - Control - AC.L1-B.1.II: Practical AWS and Azure examples

Step-by-step guidance and ready-to-use IAM policy patterns in AWS and Azure to meet FAR 52.204-21 / CMMC 2.0 Level 1 AC.L1-B.1.II access-control requirements for small businesses.

•
April 02, 2026
•
4 min read

Share:

Schedule Your Free Compliance Consultation

Feeling overwhelmed by compliance requirements? Not sure where to start? Get expert guidance tailored to your specific needs in just 15 minutes.

Personalized Compliance Roadmap
Expert Answers to Your Questions
No Obligation, 100% Free

Limited spots available!

This post explains how to implement IAM policies and related controls to meet FAR 52.204-21 and CMMC 2.0 Level 1 Control AC.L1-B.1.II (limit access to authorized users, processes, and devices), with practical AWS and Azure examples tailored for small businesses and contractor environments subject to the Compliance Framework.

Key objectives and Implementation Notes (Compliance Framework)

The core objective of AC.L1-B.1.II is to ensure only authorized users and processes can access systems that process or store Federal contract information (FCI) or other covered data. Implementation Notes for the Compliance Framework: enforce least privilege, require strong authentication (MFA), restrict access by role and location where appropriate, use short-lived credentials for automation, and log/authenticate all access. For small businesses this usually means combining identity provider controls (Azure AD, AWS SSO/IAM) with policy-level enforcement (IAM policies, RBAC) and monitoring (CloudTrail/Azure Monitor).

AWS: practical implementation strategy

In AWS, implement AC.L1-B.1.II by: 1) centralizing identity with AWS SSO or an external IdP, 2) creating least-privilege IAM roles and permission boundaries, 3) enforcing MFA for console/API access, 4) constraining use by source IP or VPC endpoints where reasonable, and 5) enabling CloudTrail and AWS Config to capture access activity. Use IAM groups for coarse grouping (employees, contractors) but prefer role assumption for cross-account/sensitive tasks. For programmatic access prefer short-lived STS credentials via role assumption instead of long-lived access keys.

AWS policy patterns and examples

Example: require MFA and company IP range for console access, while allowing role assumption for CI/CD from the build system's IP/VPC. This JSON is a compact "Deny" policy attached as an IAM identity policy or SCP (if using AWS Organizations) to enforce conditions:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyIfNoMFA",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "Bool": {"aws:MultiFactorAuthPresent": "false"}
      }
    },
    {
      "Sid": "DenyIfNotFromOffice",
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "NotIpAddress": {"aws:SourceIp": ["203.0.113.0/24","198.51.100.0/24"]}
      }
    }
  ]
}

Attach the deny policy at the account-level for users and roles that must follow these rules; use permission boundaries for contractor accounts where you want to cap maximum privileges. For small businesses: create an "Admin" role with MFA required and a "Developer" role with scoped permissions to specific services (e.g., s3:GetObject, s3:PutObject on a designated bucket ARN). Example resource-scoped allow statements should use precise ARNs: "arn:aws:s3:::my-company-prod-bucket/*".

Azure: practical implementation strategy

In Azure, implement AC.L1-B.1.II using Azure AD, Azure RBAC, Conditional Access, and Privileged Identity Management (PIM). Create least-privilege custom roles when built-in roles are too broad. Use Conditional Access policies to require MFA and restrict sign-ins to trusted networks or compliant devices. Use Azure Managed Identities for resources (VMs, App Services) to avoid secrets and use role assignments scoped to resource groups or resource-level (never subscription-wide unless necessary).

Azure configuration snippets and examples

Example Conditional Access policy (conceptual PowerShell/Azure AD steps): require MFA for all users accessing management portals, but permit service principals only from named app IDs and with certificate-based authentication. For small businesses: enable PIM for your Global Admins to require JIT activation and approval, and schedule access reviews quarterly. Example CLI to create a role assignment scoped to a resource group:

az role assignment create \
  --assignee  \
  --role "Contributor" \
  --scope /subscriptions//resourceGroups/my-app-rg
</code></pre>

Combine this with a Conditional Access policy that enforces "Require MFA" plus a location filter (named locations) so interactive console admin sessions are always MFA-protected and identifiable. For automation, register service principals and constrain them with certificate credentials and Azure AD app role assignments rather than user accounts.

Compliance tips, monitoring and best practices

Practical tips: 1) Document role definitions and map them to job functions (SOD). 2) Use automated onboarding/offboarding with HR triggers to remove access promptly. 3) Enable logging: CloudTrail + CloudWatch (AWS), Azure Activity Logs + Log Analytics (Azure). 4) Run periodic access reviews (quarterly for Level 1) and use IAM access advisor or Azure access reviews to remove unused permissions. 5) Use permission boundaries (AWS) or managed identities/scoped role assignments (Azure) to limit blast radius. 6) Where possible, enforce policies at the organization level (AWS SCPs or Azure Management Group policies) so local changes cannot bypass controls required by the Compliance Framework.

Risk of not implementing AC.L1-B.1.II

Failing to limit access to authorized users/processes increases the risk of unauthorized disclosure of contract-related information, credential theft, lateral movement, and misconfiguration. For contractors this can mean contract termination, inability to bid for future federal contracts, reputational harm, and potential civil penalties. Technically, long-lived keys, broad roles, or missing MFA/logging make incident detection and response slow and remediation more expensive.

Summary: implement least-privilege roles, require MFA and conditional access, prefer short-lived credentials (STS or managed identities), scope permissions to specific ARNs/resource IDs, enforce organization-level deny guards (SCPs/Policies), and maintain logging and periodic access reviews. These practical steps in AWS and Azure will help a small business meet FAR 52.204-21 / CMMC 2.0 Level 1 AC.L1-B.1.II obligations while keeping operational overhead manageable.

 

Quick & Simple

Discover Our Cybersecurity Compliance Solutions:

Whether you need to meet and maintain your compliance requirements, help your clients meet them, or verify supplier compliance we have the expertise and solution for you

 CMMC Level 1 Compliance App

CMMC Level 1 Compliance

Become compliant, provide compliance services, or verify partner compliance with CMMC Level 1 Basic Safeguarding of Covered Contractor Information Systems requirements.
 NIST SP 800-171 & CMMC Level 2 Compliance App

NIST SP 800-171 & CMMC Level 2 Compliance

Become compliant, provide compliance services, or verify partner compliance with NIST SP 800-171 and CMMC Level 2 requirements.
 HIPAA Compliance App

HIPAA Compliance

Become compliant, provide compliance services, or verify partner compliance with HIPAA security rule requirements.
 ISO 27001 Compliance App

ISO 27001 Compliance

Become compliant, provide compliance services, or verify partner compliance with ISO 27001 requirements.
 FAR 52.204-21 Compliance App

FAR 52.204-21 Compliance

Become compliant, provide compliance services, or verify partner compliance with FAR 52.204-21 Basic Safeguarding of Covered Contractor Information Systems requirements.
 
Hello! How can we help today? 😃

Chat with Lakeridge

We typically reply within minutes