{
  "title": "How to use IAM tools (Azure AD, Okta, AWS IAM) to enforce FAR 52.204-21 / CMMC 2.0 Level 1 - Control - AC.L1-B.1.II: step-by-step setups",
  "date": "2026-04-05",
  "author": "Lakeridge Technologies",
  "featured_image": "/assets/images/blog/2026/4/how-to-use-iam-tools-azure-ad-okta-aws-iam-to-enforce-far-52204-21-cmmc-20-level-1-control-acl1-b1ii-step-by-step-setups.jpg",
  "content": {
    "full_html": "<p>This post gives engineers and compliance owners practical, step-by-step instructions to use Azure Active Directory, Okta, and AWS IAM to meet FAR 52.204-21 and the CMMC 2.0 Level 1 practice AC.L1-B.1.II (limit information system access to authorized users/processes and devices); it focuses on concrete configuration, automation, evidence collection, and small-business scenarios so you can show auditors that access is controlled, logged, and reviewed.</p>\n\n<h2>Azure AD — step-by-step setup to enforce AC.L1-B.1.II</h2>\n<p>Implement this minimal Azure AD configuration to enforce authorized-user/device access: (1) Create and organize identities: use Azure AD users and security groups for functional roles (az ad user create; az ad group create). (2) Enforce unique accounts and disable shared accounts — create a \"break-glass\" emergency account with MFA and audit only if absolutely necessary. (3) Require MFA using Conditional Access: create a policy that targets All Users (exclude break-glass), All Cloud Apps (or specific apps with CUI), with grant controls: require multi-factor authentication and require compliant device when applicable (Block legacy authentication). Example Conditional Access UI settings: Assignments → Users: All Users (exclude emergency); Cloud apps: Selected apps; Conditions → Client apps: Exclude 'modern auth' if necessary; Access controls → Grant: Require multi-factor authentication + Require device to be marked as compliant. (4) Configure self-service password reset (SSPR) and disable weak auth: enable SSPR and block legacy authentication protocols in the Sign-in risk settings. (5) Automate provisioning with System for Cross-domain Identity Management (SCIM) if you integrate SaaS apps — configure group claims for SAML/OIDC apps so role membership maps to app privileges. Collect evidence with Azure AD sign-in logs and Conditional Access reports (download CSVs or forward to a SIEM via Azure Monitor). If you have only Azure AD Free, still use conditional access alternatives (app-level controls) and enforce MFA with per-user MFA while documenting limitations.</p>\n\n<h2>Okta — step-by-step setup to enforce AC.L1-B.1.II</h2>\n<p>For organizations using Okta as identity provider: (1) Create a clear Okta org structure: Users → Groups for roles (e.g., CUI-Read, CUI-Edit). (2) Configure Sign-On Policies: create an Okta Sign-On Policy that requires strong authentication methods for any app that handles CUI; use factors such as Okta Verify, WebAuthn (passkeys) or U2F. Example Sign-On rule: If network zone is Any and Group is CUI-Access, then require Okta Verify or WebAuthn and deny access otherwise. (3) Enable adaptive MFA and device trust: use Okta Device Trust (for managed devices) or integrate with endpoint management so you can require a device that meets your posture. (4) Automate provisioning and deprovisioning by enabling SCIM for SaaS apps — configure a lifecycle hook so that when AD/HR changes occur, Okta updates app assignments automatically. (5) Set session lifetimes and idle timeouts appropriate for CUI (shorter sessions for higher sensitivity). (6) Enable System Log export (or SIEM integration) and retain sign-in and admin action logs per contract. Practical Okta configuration actions include creating app-level policies, setting up inline hooks for approval workflows during onboarding, and using Okta's Reports > System Log to extract evidence for auditors.</p>\n\n<h2>AWS IAM — step-by-step setup to enforce AC.L1-B.1.II</h2>\n<p>On AWS, enforce access limits at the account and resource level: (1) Protect the root account: enable MFA on the root user, store credentials in a vault, and never use it for day-to-day operations. (2) Use IAM users sparingly — prefer IAM Identity Center (AWS SSO) integrated with Okta/Azure AD for centralized identity; when using IAM users, enforce a password policy and require MFA. Example CLI to create a user: aws iam create-user --user-name alice. (3) Apply least-privilege via IAM policies and roles: create narrowly scoped policies and attach to roles or groups. Sample policy restricting S3 read-only to a specific prefix: \n<pre><code>{\n  \"Version\":\"2012-10-17\",\n  \"Statement\":[\n    {\n      \"Effect\":\"Allow\",\n      \"Action\":[\"s3:GetObject\"],\n      \"Resource\":[\"arn:aws:s3:::my-cui-bucket/cui-prefix/*\"]\n    }\n  ]\n}\n</code></pre>\n(4) Use roles for EC2 and Lambda (never embed long-term keys in code) and require role assumption with proper session durations. (5) Enable AWS CloudTrail in all regions and deliver logs to a central S3 bucket (with access logging and encryption) and configure AWS Config to capture resource drift. (6) Use IAM Access Analyzer and CloudTrail logs to produce evidence of access attempts and policy changes; export CloudTrail to CloudWatch or a SIEM for searchable audit trails. (7) If you integrate SSO, map Azure AD/Okta groups to AWS roles using SAML assertions and include attribute mappings that enforce group-to-role mapping for CUI access.</p>\n\n<h2>Real-world example scenarios for a small business</h2>\n<p>Example A — small defense subcontractor (20 employees) hosting project files in AWS S3 and Office 365: provision identities in Azure AD, enforce Conditional Access requiring MFA and compliant devices for SharePoint and Exchange; connect Azure AD to Okta only if you need a central SaaS catalog; integrate Azure AD to AWS IAM Identity Center to give engineers temporary AWS roles mapped from Azure groups; automate onboarding from HR via SCIM to create accounts in minutes and document provisioning runbooks as evidence. Example B — consultancy using Okta and AWS: use Okta for SSO to Jira, Confluence, and an S3-backed app; create Okta lifecycle rules to remove access within 1 hour of offboarding; in AWS attach scoped IAM policies to roles and log all S3 access via CloudTrail + S3 object-level logging. Both examples rely on monthly access reviews (attestation) and a documented \"break-glass\" process with logged approvals.</p>\n\n<h2>Compliance tips and best practices</h2>\n<p>Focus on demonstrable controls and repeatable evidence: keep configuration screenshots, export reports (Azure AD Sign-ins, Okta System Log, AWS CloudTrail), and store them in a dedicated evidence repository. Implement least-privilege by default and use role or group-based access rather than per-user ad hoc policies. Automate provisioning/deprovisioning with SCIM to avoid orphaned accounts; require MFA for all accounts with potential CUI access and enforce device posture for remote access. Schedule quarterly privilege reviews (list group members and role policies) and document remediation actions. For small teams with limited budgets, document compensating controls and limitations (e.g., if Conditional Access requires Azure AD P1 and you don't have it yet) and include a roadmap and timeline for upgrades.</p>\n\n<h2>Risk of not implementing AC.L1-B.1.II correctly</h2>\n<p>Failing to limit system access increases the risk of unauthorized disclosure or modification of controlled unclassified information (CUI), lateral movement after credential compromise, supply-chain attacks, contract termination, and financial and reputational damage. For contractors, noncompliance can lead to failed audits, loss of current and future contracts, or corrective action plans that may be costly. Technically, lack of access controls leads to stale accounts, over-privileged roles, and insufficient forensic logs — all of which lengthen incident response and increase breach impact.</p>\n\n<h3>Implementation notes (technical, evidence, and small-business pragmatics)</h3>\n<p>Practical technical notes: (1) Centralize logs: forward Azure AD logs to Azure Monitor/Log Analytics, Okta System Log to your SIEM, and CloudTrail to a central bucket; keep immutable copies. (2) Evidence: prepare a checklist that ties each requirement in FAR 52.204-21 / CMMC L1 to artifacts (policy screenshot, policy JSON, user membership export, sign-in log sample, onboarding/offboarding workflow). (3) Budget and licensing: map required controls to product SKUs (Azure AD P1 for Conditional Access, Okta's Adaptive MFA, AWS Organizations features) and document any gaps with compensating controls until you can upgrade. (4) Emergency access: define and test a break-glass process monthly and log every use. (5) Training: ensure staff know how to request access changes and follow least-privilege principles; save attestation records.</p>\n\n<p>Summary: by combining Azure AD/Conditional Access, Okta adaptive policies and lifecycle automation, and AWS IAM/roles plus centralized logging, small businesses can implement AC.L1-B.1.II in a repeatable, auditable way — enforce unique user identities, least privilege, MFA, device posture, automated provisioning/deprovisioning, and robust logging to produce evidence for FAR 52.204-21 and CMMC 2.0 Level 1 audits; prioritize automation, documentation, and regular reviews to keep the environment compliant and resilient.</p>",
    "plain_text": "This post gives engineers and compliance owners practical, step-by-step instructions to use Azure Active Directory, Okta, and AWS IAM to meet FAR 52.204-21 and the CMMC 2.0 Level 1 practice AC.L1-B.1.II (limit information system access to authorized users/processes and devices); it focuses on concrete configuration, automation, evidence collection, and small-business scenarios so you can show auditors that access is controlled, logged, and reviewed.\n\nAzure AD — step-by-step setup to enforce AC.L1-B.1.II\nImplement this minimal Azure AD configuration to enforce authorized-user/device access: (1) Create and organize identities: use Azure AD users and security groups for functional roles (az ad user create; az ad group create). (2) Enforce unique accounts and disable shared accounts — create a \"break-glass\" emergency account with MFA and audit only if absolutely necessary. (3) Require MFA using Conditional Access: create a policy that targets All Users (exclude break-glass), All Cloud Apps (or specific apps with CUI), with grant controls: require multi-factor authentication and require compliant device when applicable (Block legacy authentication). Example Conditional Access UI settings: Assignments → Users: All Users (exclude emergency); Cloud apps: Selected apps; Conditions → Client apps: Exclude 'modern auth' if necessary; Access controls → Grant: Require multi-factor authentication + Require device to be marked as compliant. (4) Configure self-service password reset (SSPR) and disable weak auth: enable SSPR and block legacy authentication protocols in the Sign-in risk settings. (5) Automate provisioning with System for Cross-domain Identity Management (SCIM) if you integrate SaaS apps — configure group claims for SAML/OIDC apps so role membership maps to app privileges. Collect evidence with Azure AD sign-in logs and Conditional Access reports (download CSVs or forward to a SIEM via Azure Monitor). If you have only Azure AD Free, still use conditional access alternatives (app-level controls) and enforce MFA with per-user MFA while documenting limitations.\n\nOkta — step-by-step setup to enforce AC.L1-B.1.II\nFor organizations using Okta as identity provider: (1) Create a clear Okta org structure: Users → Groups for roles (e.g., CUI-Read, CUI-Edit). (2) Configure Sign-On Policies: create an Okta Sign-On Policy that requires strong authentication methods for any app that handles CUI; use factors such as Okta Verify, WebAuthn (passkeys) or U2F. Example Sign-On rule: If network zone is Any and Group is CUI-Access, then require Okta Verify or WebAuthn and deny access otherwise. (3) Enable adaptive MFA and device trust: use Okta Device Trust (for managed devices) or integrate with endpoint management so you can require a device that meets your posture. (4) Automate provisioning and deprovisioning by enabling SCIM for SaaS apps — configure a lifecycle hook so that when AD/HR changes occur, Okta updates app assignments automatically. (5) Set session lifetimes and idle timeouts appropriate for CUI (shorter sessions for higher sensitivity). (6) Enable System Log export (or SIEM integration) and retain sign-in and admin action logs per contract. Practical Okta configuration actions include creating app-level policies, setting up inline hooks for approval workflows during onboarding, and using Okta's Reports > System Log to extract evidence for auditors.\n\nAWS IAM — step-by-step setup to enforce AC.L1-B.1.II\nOn AWS, enforce access limits at the account and resource level: (1) Protect the root account: enable MFA on the root user, store credentials in a vault, and never use it for day-to-day operations. (2) Use IAM users sparingly — prefer IAM Identity Center (AWS SSO) integrated with Okta/Azure AD for centralized identity; when using IAM users, enforce a password policy and require MFA. Example CLI to create a user: aws iam create-user --user-name alice. (3) Apply least-privilege via IAM policies and roles: create narrowly scoped policies and attach to roles or groups. Sample policy restricting S3 read-only to a specific prefix: \n{\n  \"Version\":\"2012-10-17\",\n  \"Statement\":[\n    {\n      \"Effect\":\"Allow\",\n      \"Action\":[\"s3:GetObject\"],\n      \"Resource\":[\"arn:aws:s3:::my-cui-bucket/cui-prefix/*\"]\n    }\n  ]\n}\n\n(4) Use roles for EC2 and Lambda (never embed long-term keys in code) and require role assumption with proper session durations. (5) Enable AWS CloudTrail in all regions and deliver logs to a central S3 bucket (with access logging and encryption) and configure AWS Config to capture resource drift. (6) Use IAM Access Analyzer and CloudTrail logs to produce evidence of access attempts and policy changes; export CloudTrail to CloudWatch or a SIEM for searchable audit trails. (7) If you integrate SSO, map Azure AD/Okta groups to AWS roles using SAML assertions and include attribute mappings that enforce group-to-role mapping for CUI access.\n\nReal-world example scenarios for a small business\nExample A — small defense subcontractor (20 employees) hosting project files in AWS S3 and Office 365: provision identities in Azure AD, enforce Conditional Access requiring MFA and compliant devices for SharePoint and Exchange; connect Azure AD to Okta only if you need a central SaaS catalog; integrate Azure AD to AWS IAM Identity Center to give engineers temporary AWS roles mapped from Azure groups; automate onboarding from HR via SCIM to create accounts in minutes and document provisioning runbooks as evidence. Example B — consultancy using Okta and AWS: use Okta for SSO to Jira, Confluence, and an S3-backed app; create Okta lifecycle rules to remove access within 1 hour of offboarding; in AWS attach scoped IAM policies to roles and log all S3 access via CloudTrail + S3 object-level logging. Both examples rely on monthly access reviews (attestation) and a documented \"break-glass\" process with logged approvals.\n\nCompliance tips and best practices\nFocus on demonstrable controls and repeatable evidence: keep configuration screenshots, export reports (Azure AD Sign-ins, Okta System Log, AWS CloudTrail), and store them in a dedicated evidence repository. Implement least-privilege by default and use role or group-based access rather than per-user ad hoc policies. Automate provisioning/deprovisioning with SCIM to avoid orphaned accounts; require MFA for all accounts with potential CUI access and enforce device posture for remote access. Schedule quarterly privilege reviews (list group members and role policies) and document remediation actions. For small teams with limited budgets, document compensating controls and limitations (e.g., if Conditional Access requires Azure AD P1 and you don't have it yet) and include a roadmap and timeline for upgrades.\n\nRisk of not implementing AC.L1-B.1.II correctly\nFailing to limit system access increases the risk of unauthorized disclosure or modification of controlled unclassified information (CUI), lateral movement after credential compromise, supply-chain attacks, contract termination, and financial and reputational damage. For contractors, noncompliance can lead to failed audits, loss of current and future contracts, or corrective action plans that may be costly. Technically, lack of access controls leads to stale accounts, over-privileged roles, and insufficient forensic logs — all of which lengthen incident response and increase breach impact.\n\nImplementation notes (technical, evidence, and small-business pragmatics)\nPractical technical notes: (1) Centralize logs: forward Azure AD logs to Azure Monitor/Log Analytics, Okta System Log to your SIEM, and CloudTrail to a central bucket; keep immutable copies. (2) Evidence: prepare a checklist that ties each requirement in FAR 52.204-21 / CMMC L1 to artifacts (policy screenshot, policy JSON, user membership export, sign-in log sample, onboarding/offboarding workflow). (3) Budget and licensing: map required controls to product SKUs (Azure AD P1 for Conditional Access, Okta's Adaptive MFA, AWS Organizations features) and document any gaps with compensating controls until you can upgrade. (4) Emergency access: define and test a break-glass process monthly and log every use. (5) Training: ensure staff know how to request access changes and follow least-privilege principles; save attestation records.\n\nSummary: by combining Azure AD/Conditional Access, Okta adaptive policies and lifecycle automation, and AWS IAM/roles plus centralized logging, small businesses can implement AC.L1-B.1.II in a repeatable, auditable way — enforce unique user identities, least privilege, MFA, device posture, automated provisioning/deprovisioning, and robust logging to produce evidence for FAR 52.204-21 and CMMC 2.0 Level 1 audits; prioritize automation, documentation, and regular reviews to keep the environment compliant and resilient."
  },
  "metadata": {
    "description": "Practical, step-by-step guidance to use Azure AD, Okta, and AWS IAM to meet the access-control requirements of FAR 52.204-21 and CMMC 2.0 Level 1 (AC.L1-B.1.II) for small businesses.",
    "permalink": "/how-to-use-iam-tools-azure-ad-okta-aws-iam-to-enforce-far-52204-21-cmmc-20-level-1-control-acl1-b1ii-step-by-step-setups.json",
    "categories": [],
    "tags": []
  }
}