<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title>AWS Security Blog</title>
	<atom:link href="https://aws.amazon.com/blogs/security/feed/" rel="self" type="application/rss+xml"/>
	<link>https://aws.amazon.com/blogs/security/</link>
	<description>The latest AWS security, identity, and compliance launches, announcements, and how-to posts.</description>
	<lastBuildDate>Thu, 20 Aug 2026 18:40:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>AWS Network Firewall now supports rule hit count</title>
		<link>https://aws.amazon.com/blogs/security/aws-network-firewall-now-supports-rule-hit-count/</link>
					
		
		<dc:creator><![CDATA[Preetkumar Shah]]></dc:creator>
		<pubDate>Thu, 20 Aug 2026 18:40:20 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[AWS Network Firewall]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">bbf4a3240aaba594c48739828da0eaf76646654f</guid>

					<description>As firewall rule sets grow in complexity, security teams face a common challenge: manual log analysis is used to determine which rules are actively matching traffic and which are consuming capacity without being triggered. This lack of visibility creates operational and compliance gaps. Organizations with governance policies that require removal of dormant rules after a […]</description>
										<content:encoded>&lt;p&gt;As firewall rule sets grow in complexity, security teams face a common challenge: manual log analysis is used to determine which rules are actively matching traffic and which are consuming capacity without being triggered. This lack of visibility creates operational and compliance gaps. Organizations with governance policies that require removal of dormant rules after a defined period have no mechanism to identify them. Teams responsible for compliance frameworks such as Payment Card Industry (PCI) 4.0 and Digital Operational Resilience Act (DORA) can’t provide evidence that specific controls are actively functioning. Central teams managing firewalls on behalf of multiple business units have no way to determine which rules are unused or need updating.&lt;/p&gt; 
&lt;p&gt;In this post, you learn how a new &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/network-firewall/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Network Firewall&lt;/a&gt;&lt;/span&gt; capability—rule hit count—addresses these challenges by providing traffic match data for stateful rules across both custom and managed rule groups. With this data, you can identify and remove unused rules, accelerate incident response, and validate security control effectiveness for compliance.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;&lt;b&gt;How it works&lt;/b&gt;&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Rule hit counts track how often each stateful rule matches network traffic. The hit counter increments only when a rule match results in an alert log being created. This means any rule with an &lt;code class="CodeInline" style="color: #000"&gt;alert&lt;/code&gt;, &lt;code class="CodeInline" style="color: #000"&gt;drop&lt;/code&gt;, or &lt;code class="CodeInline" style="color: #000"&gt;reject&lt;/code&gt; action will increment the hit counter, because these actions generate alert logs. However, rules configured with a &lt;code class="CodeInline" style="color: #000"&gt;pass&lt;/code&gt; action don’t generate alert logs by default, meaning they won’t appear in the rule hit count metric.&lt;/p&gt; 
&lt;p&gt;To gain visibility into traffic matching pass rules, you can include the &lt;code class="CodeInline" style="color: #000"&gt;alert&lt;/code&gt; keyword within the &lt;code class="CodeInline" style="color: #000"&gt;pass&lt;/code&gt; rule. This generates an alert log while still permitting the traffic to its intended destination. The following Suricata rule demonstrates this approach:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;pass tls $HOME_NET any -&amp;gt; $EXTERNAL_NET 443 (msg:"Pass and Log HTTPS traffic"; alert; sid:1000001; rev:1;)&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;This rule passes HTTPS traffic to its destination while also generating an alert log, making sure the rule appears in the hit count metric.&lt;/p&gt; 
&lt;p&gt;The rule hit count feature adds the following metadata to each alert log. Metadata is included by default and doesn’t require additional configuration:&lt;/p&gt; 
&lt;p&gt;&lt;code class="CodeInline" style="color: #000"&gt;“aws_metadata": { “resource_arn": “arn:aws:network-firewall:us-east-1:123456789012:stateful-rulegroup/StatefulRuleGroup” }&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;The following example shows a complete alert log with this metadata included:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;{ 

    "firewall_name": "egress-and-east-west-firewall", 

    "availability_zone": "us-east-1a", 

    "event_timestamp": "1786112515", 

    "event": { 

        "tx_guessed": true, 

        "aws_category": "", 

        "tx_id": 0, 

        "app_proto": "http", 

        "ip_v": 4, 

        "src_ip": "10.2.1.205", 

        "src_port": 46240, 

        "event_type": "alert", 

        "alert": { 

            "severity": 3, 

            "signature_id": 10000003, 

            "rev": 0, 

            "signature": "Egress HTTP but not port TCP/80", 

            "action": "blocked", 

            "category": "" 

        }, 

        "ts_progress": "request_complete", 

        "flow_id": 927132830538451, 

        "dest_ip": "3.226.253.175", 

        "proto": "TCP", 

        "verdict": { 

            "action": "drop" 

        }, 

        "http": { 

            "hostname": "3.226.253.175", 

            "http_port": 4444, 

            "url": "/", 

            "http_user_agent": "curl/8.17.0", 

            "http_method": "GET", 

            "protocol": "HTTP/1.1", 

            "length": 0 

        }, 

        "tc_progress": "response_started", 

        "dest_port": 4444, 

        "pkt_src": "geneve encapsulation", 

        "aws_metadata": { 

            "resource_arn": "arn:aws:network-firewall:us-east-1:123456789012:stateful-rulegroup/StatefulRuleGroup" 

        }, 

        "timestamp": "2026-08-07T14:21:55.611810+0000", 

        "direction": "to_server" 

    } 

} &lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;The alert log data in the preceding example is the source for rule hit count metrics. Network Firewall pushes these alert logs to your &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cloudwatch/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon CloudWatch Logs&lt;/a&gt;&lt;/span&gt; or &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/s3/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Simple Storage Service (Amazon S3)&lt;/a&gt;&lt;/span&gt;. To identify the specific rule that generated an alert, you can search using the combination of the &lt;code class="CodeInline" style="color: #000"&gt;sid&lt;/code&gt; (signature ID) and &lt;code class="CodeInline" style="color: #000"&gt;resource_arn&lt;/code&gt; fields. The &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/network-firewall/latest/developerguide/nwfw-detailed-monitoring.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;firewall monitoring dashboard&lt;/a&gt;&lt;/span&gt; uses these fields to generate hit counts for each rule, so you can review rule activity directly on the dashboard without querying logs.&lt;/p&gt; 
&lt;p&gt;You can also access and analyze this data by querying those logs directly using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;CloudWatch Logs Insights&lt;/a&gt;&lt;/span&gt; for logs stored in CloudWatch, or &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/athena" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Athena&lt;/a&gt;&lt;/span&gt; for logs stored in Amazon S3.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Getting started&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Network Firewall rule hit count is enabled by default, so you don’t need to perform any additional configuration to start tracking rule hits on your firewall policies. This means that as soon as you deploy your firewall rules, you can begin to monitor which rules are being triggered, helping you gain visibility into your traffic patterns and identify potential security concerns.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This walkthrough requires an existing network firewall configured to inspect traffic from your &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/vpc" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Virtual Private Cloud (Amazon VPC)&lt;/a&gt;&lt;/span&gt;. If you don’t have one set up yet, follow the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/network-firewall/latest/developerguide/getting-started.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Getting started with AWS Network Firewall&lt;/a&gt;&lt;/span&gt; guide.&lt;/p&gt; 
&lt;p&gt;Additionally, ensure the following:&lt;/p&gt; 
&lt;ol id="rte-303ab381-974f-11f1-8238-0959b42236a3" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;Alert log delivery must be configured: The firewall must have alert logging enabled. Note that rule hit count metadata is captured regardless of log destination; however, the native dashboard feature requires logs to be sent to CloudWatch Logs or Amazon S3.&lt;/li&gt; 
 &lt;li&gt;Firewall monitoring must be enabled: To see the dashboard widget shown in figure 1, you must enable detailed monitoring through the firewall’s logging configuration or the &lt;b&gt;Monitoring&lt;/b&gt; tab in the AWS Management Console for AWS Network Firewall. However, if you have a custom dashboard solution, the metadata required for rule hit count analysis is automatically included in the firewall logs regardless of whether detailed monitoring is enabled—so you can build your own visualizations using the log data directly.&lt;/li&gt; 
 &lt;li&gt;Pass rules must include the alert keyword to appear in hit count metrics: Rules configured with a &lt;code class="CodeInline" style="color: #000"&gt;pass&lt;/code&gt; action don’t generate alert logs by default. To track pass rule activity in the hit count metric, include the &lt;code class="CodeInline" style="color: #000"&gt;alert&lt;/code&gt; keyword in your pass rules, as demonstrated in the &lt;b&gt;How it works&lt;/b&gt; section of this post.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;The &lt;b&gt;Top Rule Hits&lt;/b&gt; dashboard shows aggregated hit counts per firewall across all Availability Zones within the AWS Region where that firewall is deployed. To view rule hit count metrics, open the Network Firewall console and select your firewall. Navigate to the &lt;b&gt;Monitoring and observability&lt;/b&gt; section. Under &lt;b&gt;Top&lt;/b&gt; &lt;b&gt;analysis&lt;/b&gt;, you will see the &lt;b&gt;Top Rule Hits&lt;/b&gt; metric. Select a lookback period to view rule activity within that timeframe.&lt;/p&gt; 
&lt;div id="attachment_43428" style="width: 1342px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43428" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/20/rule-hit-count-mainr.png" alt="Figure 1: Rule hit count from the dashboard" width="1332" height="352" class="size-full wp-image-43428"&gt;
 &lt;p id="caption-attachment-43428" class="wp-caption-text"&gt;Figure 1: Rule hit count from the dashboard&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;Figure 1 shows the &lt;b&gt;Top Rule Hits&lt;/b&gt; panel from the AWS Network Firewall console, displaying the most frequently triggered stateful rules. It includes columns for Hit Count (with bar chart and fraction), percentage of total hits, Resource ARN, Signature ID, Description (the msg field from the Suricata rule), and Last Occurrence (UTC).&lt;/p&gt; 
&lt;p&gt;Signature IDs 2, 4, 6, and 8 are system-generated signatures corresponding to the firewall policy’s strict order default actions. Because these signatures originate from the policy rather than a rule group, the &lt;code class="CodeInline" style="color: #000"&gt;resource_arn&lt;/code&gt; field displays the firewall policy Amazon Resource Name (ARN) instead of a rule group ARN. They appear in the Top Rule Hits when the policy has default actions such as &lt;code class="CodeInline" style="color: #000"&gt;Drop established&lt;/code&gt;, &lt;code class="CodeInline" style="color: #000"&gt;Alert established&lt;/code&gt;, or their application-layer variants configured. These signatures fire on established connection packets that don’t match any explicit rule, enforcing the policy’s default deny posture.&lt;/p&gt; 
&lt;p&gt;The following examples demonstrate how rule hit counts help you address common operational challenges.&lt;/p&gt; 
&lt;ul id="rte-271a2e20-9a7e-11f1-9fe1-af320993333d" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Identifying unused rules:&lt;/b&gt; Figure 1 shows all rule signature IDs and their descriptions (the &lt;code class="CodeInline" style="color: #000"&gt;msg&lt;/code&gt; field from the Suricata rule) that actively matched traffic during the selected lookback period. Any rule in your firewall policy whose signature ID doesn’t appear in this metric hasn’t matched any traffic during the specified timeframe. These rules are either stale or not ordered correctly within your rule group.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Accelerating incident response: &lt;/b&gt;Figure 1 shows signature ID 2525124575 (&lt;code class="CodeInline" style="color: #000"&gt;traffic_to_oast [oast[.]fun]&lt;/code&gt;) with six hits and a last occurrence of August 7, 2026, at 6:28:44 PM UTC. This rule is detecting traffic to an out-of-band application security testing (OAST) domain, which could indicate an attacker attempting to exfiltrate data or validate a vulnerability in your environment. By filtering the top rule hits metric to the timeframe of a suspected incident, your team can quickly identify this type of suspicious activity and scope the impact without manually parsing thousands of log entries.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Validating a newly added rule: &lt;/b&gt;Figure 1 shows signature ID 100000010 (&lt;code class="CodeInline" style="color: #000"&gt;Domain Category is AI/ML&lt;/code&gt;) with five hits and a last occurrence of August 7, 2026, at 6:28:21 PM UTC. After adding this rule to monitor or restrict traffic to AI/ML related domains, the hit count confirms the rule is actively matching traffic as intended. Similarly, signature ID 100000009 (&lt;code class="CodeInline" style="color: #000"&gt;Drop traffic to countries other than US&lt;/code&gt;) shows four hits, validating that the geofencing rule is functioning and blocking outbound connections to destinations outside the United States. These hit counts provide security teams with concrete evidence that newly deployed controls are working. &lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;&lt;b&gt;Pricing&lt;/b&gt;&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Rule hit counts are included with Network Firewall at no additional cost. However, standard charges apply for storing and querying log data. If you configure log delivery to CloudWatch Logs, CloudWatch pricing applies. If you store logs in Amazon S3 and query them with Athena, standard Amazon S3 storage and Athena query charges apply. For complete pricing details, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/network-firewall/pricing/" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;u&gt;AWS Network Firewall pricing&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Considerations&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Keep the following in mind when you use rule hit counts:&lt;/p&gt; 
&lt;ul id="rte-271a2e21-9a7e-11f1-9fe1-af320993333d" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;&lt;/b&gt;To manage costs, review your log utilization and configure log filtering or retention policies.&lt;/li&gt; 
 &lt;li&gt;Rule hit counts apply to stateful rules. Stateless rules don’t support hit count tracking at this time.&lt;/li&gt; 
 &lt;li&gt;Rule hit counts are available in all AWS Regions where AWS Network Firewall is supported, except Middle East (UAE) and Middle East (Bahrain). &lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Conclusion&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;In this post, you learned how rule hit counts in AWS Network Firewall give you visibility into your firewall rule utilization and effectiveness. By tracking how frequently each rule matches traffic, you can identify unused or redundant rules, optimize rule ordering, validate security controls for compliance, and respond faster during security investigations. For more information, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/network-firewall/latest/developerguide/what-is-aws-network-firewall.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Network Firewall&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-42722" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/06/29/Preetkumar-Shah.jpeg" alt="Preetkumar Shah" width="120" height="160"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Preetkumar Shah&lt;/h3&gt; 
  &lt;p&gt;Preetkumar is a Technical Account Manager at AWS, based in Atlanta, GA. He specializes in helping customers design and operate secure, scalable network architectures in the cloud. At AWS, he works with SMB customers and collaborates closely with service teams to proactively resolve complex challenges and ensure customers get the most from their AWS environment. Outside of work, his interests include spending time with family and going on trails.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-38847" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2025/06/15/Amit-Gaur.jpg" alt="Amit Gaur" width="99" height="120"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Amit Gaur&lt;/h3&gt; 
  &lt;p&gt;Amit, a Cloud Infrastructure Architect at AWS, brings his passion for technology and knowledge-sharing to the networking community. Specializing in network architecture design, he helps customers build highly scalable and resilient environments on AWS. Through technical guidance and architectural expertise, Amit enables customers to accelerate their cloud adoption journey while making sure their systems are built for scale and reliability.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-41106" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/01/05/sanshanb.jpg" alt="" width="120" height="160"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Santosh Shanbhag&lt;/h3&gt; 
  &lt;p&gt;Santosh is a seasoned product leader, specializing in security, data protection, and compliance. At AWS, he focuses on securing workloads through Network and Application Security services, including AWS Network Firewall and active threat defense.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-39893" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/19/Srivalsan-Mannoor-Sudjagar-Author.jpg" alt="" width="120" height="160"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Srivalsan Mannoor Sudhagar&lt;/h3&gt; 
  &lt;p&gt;Srivalsan is a Sr. Cloud Infrastructure Architect at Amazon Web Services Professional Services who brings expertise in Cloud Infrastructure and MLOps solutions. He is passionate about networking, container technologies and loves to innovate to help solve customer problems. He enjoys architecting solutions and providing technical guidance to help customers and partners achieve their technical and business objectives.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-43411" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/19/Cheriyan-Mundapuzha.jpg" alt="Cheriyan Mundapuzha" width="120" height="160"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Cheriyan Mundapuzha&lt;/h3&gt; 
  &lt;p&gt;Cheriyan, a Cloud Infrastructure Architect at AWS, brings his infrastructure experience to some of the most complex migration challenges in the enterprise space. Through published architectural patterns, hands-on technical leadership, and mentorship of fellow professionals, he enables customers to accelerate their modernization journey while ensuring their systems are built for resilience and operational excellence.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Propagate user authorization context in AI agents with Amazon Bedrock AgentCore</title>
		<link>https://aws.amazon.com/blogs/security/propagate-user-authorization-context-in-ai-agents-with-amazon-bedrock-agentcore/</link>
					
		
		<dc:creator><![CDATA[Anshu Bathla]]></dc:creator>
		<pubDate>Wed, 19 Aug 2026 17:24:15 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[Amazon Bedrock]]></category>
		<category><![CDATA[Amazon Bedrock AgentCore]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">1b6f89f617bae34b5acb57d048a4a54c4a624c5d</guid>

					<description>Many teams now deploy AI agents that pull from Amazon DynamoDB tables, document repositories, software as a service (SaaS) platforms, and internal knowledge bases to answer questions and automate workflows. A key risk in these deployments is that the agent has no awareness of who’s asking, so it might return data the user shouldn’t see. […]</description>
										<content:encoded>&lt;p&gt;Many teams now deploy AI agents that pull from &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/dynamodb" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon DynamoDB&lt;/a&gt;&lt;/span&gt; tables, document repositories, software as a service (SaaS) platforms, and internal knowledge bases to answer questions and automate workflows. A key risk in these deployments is that the agent has no awareness of who’s asking, so it might return data the user shouldn’t see.&lt;/p&gt; 
&lt;p&gt;If you’re using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Bedrock AgentCore&lt;/a&gt;&lt;/span&gt; to build AI agents that access multiple data sources, you need each user to see only the data they’re authorized to access. In this post, you learn patterns for propagating user authorization context through your agents so access control is enforced by infrastructure and downstream services, not by agent code. In this post, we show you how to deploy agents that enforce least privilege access without writing authorization logic in the agent itself. This approach follows &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/wellarchitected/latest/agentic-ai-lens/agentsec03.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AGENTSEC03&lt;/a&gt;&lt;/span&gt; best practice in the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/wellarchitected/latest/agentic-ai-lens/agentic-ai-lens.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Well-Architected Agentic AI Lens&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Use case&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Consider an example of a customer relationship management (CRM) chat application where employees from Sales and Finance departments interact with an AI agent to access customer information. Employees use the same chat interface and the same agent, but each department needs isolated access to their respective data:&lt;/p&gt; 
&lt;ul id="rte-a77f3453-7460-11f1-b83d-11511ea94259" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Sales&lt;/b&gt; needs access to customer contracts, pricing strategies, and sales pipeline data&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Finance&lt;/b&gt; needs access to customer invoices, payment records, and financial reports&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The AI agent accesses three types of data sources on behalf of users:&lt;/p&gt; 
&lt;ul id="rte-a77f3454-7460-11f1-b83d-11511ea94259" class="rte2-style-ul"&gt; 
 &lt;li&gt;Customer records in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/dynamodb/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon DynamoDB&lt;/a&gt;&lt;/span&gt;, partitioned by department&lt;/li&gt; 
 &lt;li&gt;Department-specific documents in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/bedrock/knowledge-bases/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Bedrock Knowledge Bases&lt;/a&gt;&lt;/span&gt; (stored in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/s3/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Simple Storage Service (Amazon S3)&lt;/a&gt;&lt;/span&gt;)&lt;/li&gt; 
 &lt;li&gt;External CRM data in Salesforce&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;When a Sales employee asks, “Show me customer contracts,” the agent must retrieve only Sales department contracts, not Finance invoices. This enforcement must happen outside the agent so that even if the agent is compromised through prompt injection or application bugs, it can’t access unauthorized data.&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Although we use department-based scoping in this example, the pattern generalizes to any custom claim you define, whether it represents a role, business unit, geographic region, or project assignment.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Architecture overview&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The following diagram shows the architecture used in this demonstration.&lt;/p&gt; 
&lt;div id="attachment_43392" style="width: 928px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43392" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-1.png" alt="Figure 1: Target architecture" width="918" height="537" class="size-full wp-image-43392"&gt;
 &lt;p id="caption-attachment-43392" class="wp-caption-text"&gt;Figure 1: Target architecture&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;The data flow shown in Figure 1 includes:&lt;/p&gt; 
&lt;ol id="rte-a77f5b63-7460-11f1-b83d-11511ea94259" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;A user opens the chat application and authenticates with &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Cognito user pool&lt;/a&gt;&lt;/span&gt; , which acts as the identity provider (IdP).&lt;/li&gt; 
 &lt;li&gt;A &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;pre token generation Lambda trigger (V2)&lt;/a&gt;&lt;/span&gt; enriches the JSON Web Tokens (JWTs) with a custom claim and AWS session tag metadata before returning them to the user.&lt;/li&gt; 
 &lt;li&gt;The web app routes the user’s request along with the access token to the agent deployed on Amazon Bedrock AgentCore Runtime.&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agents-tools-runtime.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Bedrock AgentCore Runtime&lt;/a&gt;&lt;/span&gt; validates the inbound JWT and, through Bedrock &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-oauth.html#oauth-sample-overview" target="_blank" rel="noopener" data-cms-ai="0"&gt;AgentCore Identity&lt;/a&gt;&lt;/span&gt;, issues a workload access token that binds the user and agent identities, and then invokes the agent.&lt;/li&gt; 
 &lt;li&gt;For queries requiring internal documents, the agent uses its &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/agents-tools-runtime.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/span&gt; role to query Amazon Bedrock Knowledge Bases (backed by an Amazon S3 vector store) with metadata filtering, and DynamoDB with user-scoped session-tagged credentials.&lt;/li&gt; 
 &lt;li&gt;For queries requiring external data, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/identity-overview.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Bedrock AgentCore Identity&lt;/a&gt;&lt;/span&gt; retrieves credentials from &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/secrets-manager" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Secrets Manager&lt;/a&gt;&lt;/span&gt; and performs an &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/on-behalf-of-token-exchange.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;on-behalf-of token exchange&lt;/a&gt;&lt;/span&gt; (&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://datatracker.ietf.org/doc/html/rfc8693" target="_blank" rel="noopener" data-cms-ai="0"&gt;RFC 8693&lt;/a&gt;&lt;/span&gt;) with Salesforce, returning a user-scoped access token.&lt;/li&gt; 
 &lt;li&gt;The agent calls the Salesforce REST API using the user-scoped token. Salesforce applies sharing rules and returns only records the user is authorized to access.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;This architecture follows two key principles.&lt;/p&gt; 
&lt;ul id="rte-9c89dbd2-813b-11f1-b09f-0352815c34be" class="rte2-style-ul"&gt; 
 &lt;li&gt;The agent acts as an orchestrator, not a gatekeeper; it coordinates tool calls and reasoning but doesn’t control access to data. Authorization is enforced by downstream services.&lt;/li&gt; 
 &lt;li&gt;The agent doesn’t store credentials to data stores; instead, each request gets temporary, user-bound access tokens.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;In the following sections, we dive deep into each data source to show how these principles are achieved in practice.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Initial user authentication with IdP&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;When an employee opens the chat application, they authenticate using their corporate credentials. For this example, you use &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Cognito user pools&lt;/a&gt;&lt;/span&gt; as the IdP. You can also achieve this with other IdPs such as Entra ID or Okta.&lt;/p&gt; 
&lt;p&gt;The &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;pre token generation Lambda trigger (V2)&lt;/a&gt;&lt;/span&gt; captures the user’s custom department context and adds it to the tokens to both the identity (ID) token and access token that Bedrock AgentCore Runtime uses for authorization decisions each serving a distinct purpose. The access token is used by the Bedrock AgentCore Runtime custom JWT authorizer for inbound authorization. The ID token also receive the &lt;code class="CodeInline" style="color: #000"&gt;https://aws.amazon.com/tags&lt;/code&gt; claim (used by &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Security Token Service (AWS STS))&lt;/a&gt;&lt;/span&gt; for session tags). The &lt;code class="CodeInline" style="color: #000"&gt;https://aws.amazon.com/tags&lt;/code&gt; claim is the specific format required by AWS STS to extract session tags during &lt;code class="CodeInline" style="color: #000"&gt;AssumeRoleWithWebIdentity&lt;/code&gt;. For more information and step-by-step guidance see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/security/how-to-customize-access-tokens-in-amazon-cognito-user-pools/" target="_blank" rel="noopener" data-cms-ai="0"&gt;How to customize access tokens in Amazon Cognito user pools&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;The following example shows the key logic within a pre token generation Lambda handler function configured as a trigger on your Amazon Cognito user pool. This code runs automatically when a user authenticates, extracting their department attribute and adding it as a custom claim to both ID Token and access token.&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;import json

def lambda_handler(event, context):
    department = event['request']['userAttributes'].get('custom:department', '')

    event['response']['claimsAndScopeOverrideDetails'] = {
        'idTokenGeneration': {
            'claimsToAddOrOverride': {
                'department': department,
                'https://aws.amazon.com/tags': {
                    "principal_tags": {"department": [department]},
                    "transitive_tag_keys": ["department"]
                }
            }
        },
        'accessTokenGeneration': {
            'claimsToAddOrOverride': {
                'department': department
            }
        }
    }
    return event
&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Inbound authorization by AgentCore Runtime&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;When the user request reaches AgentCore Runtime, the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/inbound-jwt-authorizer.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Inbound JWT authorizer&lt;/a&gt;&lt;/span&gt; performs two checks as shown in Figure 2. It validates the JWT token with Amazon Cognito (the configured IdP) by cryptographically verifying the token’s signature, confirming it is non-expired, and checking it was issued by the trusted IdP. It then extracts the department claim from the validated token and compares it against the expected value configured in the authorizer, any token without a matching claim is rejected before the agent code is invoked.&lt;/p&gt; 
&lt;div id="attachment_43393" style="width: 520px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43393" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-2.png" alt="Figure 2: Inbound JWT authorization" width="510" height="218" class="size-full wp-image-43393"&gt;
 &lt;p id="caption-attachment-43393" class="wp-caption-text"&gt;Figure 2: Inbound JWT authorization&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;The following example shows the inbound JWT authorizer configuration that you pass when deploying your agent to AgentCore Runtime. This configuration tells AgentCore which IdP to validate against and which custom claim value to enforce for this agent. In this example, &lt;code class="CodeInline" style="color: #000"&gt;inboundTokenClaimName&lt;/code&gt; is department, &lt;code class="CodeInline" style="color: #000"&gt;inboundTokenClaimValueType&lt;/code&gt; declares the claim type as &lt;code class="CodeInline" style="color: #000"&gt;STRING_ARRAY&lt;/code&gt;, and &lt;code class="CodeInline" style="color: #000"&gt;authorizingClaimMatchValue&lt;/code&gt; specifies the allowed values (&lt;code class="CodeInline" style="color: #000"&gt;[“Sales”, “Finance”]&lt;/code&gt;) with the &lt;code class="CodeInline" style="color: #000"&gt;CONTAINS_ANY&lt;/code&gt; operator. The authorizer validates that the department claim is present in the token and matches one of these values, ensuring only authenticated users from the Sales or Finance department can invoke the agent.&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;authorizer_config = {
        "customJWTAuthorizer": {
            "discoveryUrl": discovery_url,
            "allowedClients": [client_id],
            "customClaims": [
                {
                    "inboundTokenClaimName": "department",
                    "inboundTokenClaimValueType": "STRING_ARRAY",
                    "authorizingClaimMatchValue": {
                        "claimMatchValue": ["Sales", "Finance"]
                        "claimMatchOperator": "CONTAINS_ANY"
                    }
                }
            ]
        }
    }&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; AgentCore Runtime automatically creates a &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/understanding-agent-identities.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;workload identity&lt;/a&gt;&lt;/span&gt; for each deployed agent. A workload identity represents the digital identity of your agents within the AWS environment. It allows agents to maintain consistent identity whether they’re using IAM roles for AWS resource access, OAuth 2.0 tokens for external service integration, or API keys for third-party tool access.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Passing the user context for agent outbound authorization&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;After the inbound JWT token is validated and the user’s authorization context is confirmed, the agent must propagate this context to downstream resources. The fundamental security challenge here is how to design a system so that an agent acting on behalf of a user can only access data that user is authorized to see, even if the agent itself is compromised.&lt;/p&gt; 
&lt;p&gt;The traditional approach of granting the agent broad credentials and relying on application-level filtering (such as adding &lt;code class="CodeInline" style="color: #000"&gt;WHERE&lt;/code&gt; clauses to queries) creates a single point of failure. If an attacker manipulates the agent through prompt injection or exploits a bug in the filtering logic, the full dataset becomes accessible. A more resilient design moves authorization enforcement out of the agent’s application code and into the infrastructure layer wherever possible. Instead of trusting the agent to filter results correctly, you configure the underlying services—IAM policies, database access controls, SaaS sharing rules—to reject unauthorized requests regardless of what the agent asks for. This way, the agent’s credentials are inherently limited to the requesting user’s permissions, and no amount of prompt manipulation can bypass those boundaries. Where infrastructure-level enforcement isn’t yet available, such as metadata filtering in Amazon Bedrock Knowledge Bases, the agent applies application-layer controls as a complementary measure. The following sections demonstrate how this principle applies to each data source in our architecture.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Pattern 1: Scoping DynamoDB access to the requesting user&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;For DynamoDB access, you can use &lt;code class="CodeInline" style="color: #000"&gt;AssumeRoleWithWebIdentity&lt;/code&gt; with session tags to create per-request, user-scoped credentials rather than granting the agent a static IAM role with direct table access. The agent passes the user’s signed ID token to AWS STS, which extracts the department tag from the token’s &lt;code class="CodeInline" style="color: #000"&gt;https://aws.amazon.com/tags&lt;/code&gt; claim and returns temporary credentials constrained to that department’s data partition. This moves access control from agent code to IAM policy evaluation. STS additionally validates the token’s audience (aud) claim against the IAM OIDC provider configuration, preventing tokens issued for other app clients from being used to assume the role. The following diagram shows this flow (Figure 3).&lt;/p&gt; 
&lt;p&gt;&lt;a href="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-3.png" rel="noopener" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id="attachment_43394" style="width: 1095px" class="wp-caption aligncenter"&gt;
 &lt;a href="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-3.png" rel="noopener" target="_blank"&gt;&lt;img aria-describedby="caption-attachment-43394" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-3.png" alt="Figure 3: DynamoDB access using AssumeRoleWithWebIdentity and session tags" width="1085" height="1063" class="size-full wp-image-43394"&gt;&lt;p id="caption-attachment-43394" class="wp-caption-text"&gt;Figure 3: DynamoDB access using AssumeRoleWithWebIdentity and session tags&lt;/p&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Prerequisites (one-time setup):&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;Before this runtime flow can execute, complete the following configuration:&lt;/p&gt; 
&lt;ul id="rte-87a2cb50-9563-11f1-af4c-bb5afd56c694" class="rte2-style-ul"&gt; 
 &lt;li&gt;Register Amazon Cognito as an IAM OIDC provider. Although the user authenticates using the Cognito API (&lt;code class="CodeInline" style="color: #000"&gt;USER_PASSWORD_AUTH&lt;/code&gt;), STS requires Cognito to be registered as an OIDC provider so it can discover and validate ID tokens. Configure the allowed client IDs (audiences) on the provider to match your application’s app client ID.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;CognitoOIDCProvider:
  Type: AWS::IAM::OIDCProvider
  Properties:
    Url: !Sub 'https://cognito-idp.${AWS::Region}.amazonaws.com/${CognitoUserPoolId}'
    ClientIdList:
      - !Ref CognitoAppClientId
    ThumbprintList:
      - '&amp;lt;thumbprint&amp;gt;'&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;ul id="rte-a6d90160-955e-11f1-af4c-bb5afd56c694" class="rte2-style-ul"&gt; 
 &lt;li&gt;Configure the &lt;code class="CodeInline" style="color: #000"&gt;UserScopedDynamoDBRole&lt;/code&gt; trust policy to include both &lt;code class="CodeInline" style="color: #000"&gt;sts:AssumeRoleWithWebIdentity&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;sts:TagSession&lt;/code&gt; permissions, with the Amazon Cognito OIDC provider as the federated principal.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {
      "Federated": "arn:aws:iam::111122223333:oidc-provider/cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE"
    },
    "Action": [
      "sts:AssumeRoleWithWebIdentity",
      "sts:TagSession"
    ],
    "Condition": {
      "StringEquals": {
        "cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE:aud": "&amp;lt;app-client-id&amp;gt;"
      }
    }
  }]
}&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;ul id="rte-87a2cb51-9563-11f1-af4c-bb5afd56c694" class="rte2-style-ul"&gt; 
 &lt;li&gt;By default, AgentCore Runtime drops custom headers as a security measure. To allow the &lt;code class="CodeInline" style="color: #000"&gt;X-Id-Token&lt;/code&gt; header through to the agent container, configure it in the agent runtime’s &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-header-allowlist.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;requestHeaderAllowlist&lt;/a&gt;&lt;/span&gt; so the ID token is forwarded to agent code. The following configuration tells AgentCore Runtime to forward only the &lt;code class="CodeInline" style="color: #000"&gt;X-Id-Token&lt;/code&gt; header to agent code, dropping other non-standard headers:&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;request_header_config = {
    'requestHeaderAllowlist': ['X-Id-Token']
}&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;b&gt;How it works:&lt;/b&gt;&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;The user navigates the web application.&lt;/li&gt; 
 &lt;li&gt;The user authenticates with Amazon Cognito using &lt;code class="CodeInline" style="color: #000"&gt;USER_PASSWORD_AUTH&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;The JWT is issued with a custom department claim and the &lt;code class="CodeInline" style="color: #000"&gt;https://aws.amazon.com/tags&lt;/code&gt; claim for STS session tagging (covered in the preceding &lt;b&gt;Initial user authentication with IdP&lt;/b&gt; section).&lt;/li&gt; 
 &lt;li&gt;Amazon Cognito returns the enriched tokens to the frontend. The access token carries the department claim for inbound authorization. The ID token carries both the department claim and the https://aws.amazon.com/tags claim for downstream STS calls.&lt;/li&gt; 
 &lt;li&gt;The user asks the agent a question (for example, “Show Q4 sales pipeline”).&lt;/li&gt; 
 &lt;li&gt;The frontend calls AgentCore Runtime, passing two tokens: the Amazon Cognito access token in the Authorization header (for inbound authorization), and the user’s ID token as a custom &lt;code class="CodeInline" style="color: #000"&gt;X-Id-Token&lt;/code&gt; header (for downstream STS calls).&lt;/li&gt; 
 &lt;li&gt;AgentCore Runtime validates the JWT and verifies the department claim matches the allowed values configured in the inbound authorizer. If validation fails, the request is rejected with HTTP 401 before agent code executes. After validation, AgentCore forwards the request to the agent container along with the allowed &lt;code class="CodeInline" style="color: #000"&gt;X-Id-Token&lt;/code&gt; header.&lt;/li&gt; 
 &lt;li&gt;The agent calls &lt;code class="CodeInline" style="color: #000"&gt;sts:AssumeRoleWithWebIdentity&lt;/code&gt; with the ID token. This call targets a single shared &lt;code class="CodeInline" style="color: #000"&gt;UserScopedDynamoDBRole&lt;/code&gt;. The following is the agent code for this step: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;def _scoped_dynamodb_resource(id_token: str):
    """Assume user-scoped role and return DynamoDB resource."""
    sts = boto3.client('sts')
    response = sts.assume_role_with_web_identity(
        RoleArn=USER_SCOPED_DYNAMODB_ROLE_ARN,
        RoleSessionName="agent-user-session",
        WebIdentityToken=id_token,
        DurationSeconds=900
    )
    creds = response['Credentials']
    session = boto3.Session(
        aws_access_key_id=creds['AccessKeyId'],
        aws_secret_access_key=creds['SecretAccessKey'],
        aws_session_token=creds['SessionToken']
    )
    return session.resource('dynamodb')&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;AWS STS validates the token against the Amazon Cognito OIDC provider registered in IAM. STS verifies the token’s cryptographic signature, expiration, issuer, and audience (&lt;code class="CodeInline" style="color: #000"&gt;aud&lt;/code&gt;). The &lt;code class="CodeInline" style="color: #000"&gt;aud&lt;/code&gt; claim in the ID token must match one of the client IDs configured on the IAM OIDC provider resource. This prevents a valid token issued by the same Cognito user pool but for a different app client from being accepted. Note that the agent’s own execution role has no DynamoDB access and only permits &lt;code class="CodeInline" style="color: #000"&gt;sts:AssumeRoleWithWebIdentity&lt;/code&gt;, so even a compromised agent can’t bypass this flow.&lt;br&gt; 
  &lt;blockquote&gt;
   &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Amazon Cognito user pools expose a standard OpenID Connect discovery endpoint, which is what you register as the trusted OIDC provider in IAM, even though the user signs in through the Cognito authentication APIs. When STS validates the token, it checks that the &lt;code class="CodeInline" style="color: #000"&gt;aud&lt;/code&gt; claim matches the client ID configured in the IAM OIDC provider. Tokens whose audience doesn’t match are rejected, adding a second control alongside signature and issuer validation.&lt;/p&gt;
  &lt;/blockquote&gt; &lt;/li&gt; 
 &lt;li&gt;AWS STS extracts the &lt;code class="CodeInline" style="color: #000"&gt;https://aws.amazon.com/tags&lt;/code&gt; claim and creates a session with &lt;code class="CodeInline" style="color: #000"&gt;aws:PrincipalTag/department&lt;/code&gt; set. The trust policy’s &lt;code class="CodeInline" style="color: #000"&gt;sts:TagSession&lt;/code&gt; permission (configured in the prerequisites) enables this. Without it, STS silently drops the session tags and subsequent access is denied.&lt;/li&gt; 
 &lt;li&gt;AWS STS returns temporary credentials. These credentials are user-scoped and tamper-proof because the session tags are derived from the cryptographically signed JWT, not from agent code. &lt;/li&gt; 
 &lt;li&gt;The agent queries DynamoDB using these credentials.&lt;/li&gt; 
 &lt;li&gt;IAM evaluates the &lt;code class="CodeInline" style="color: #000"&gt;dynamodb:LeadingKeys&lt;/code&gt; condition against &lt;code class="CodeInline" style="color: #000"&gt;${aws:PrincipalTag/department}&lt;/code&gt;. Only the user’s department partition is accessible. Because IAM evaluates this condition at the policy level, even if agent code is manipulated using prompt injection, cross-department access is denied. The following is an example of the permission policy on the role: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["dynamodb:GetItem", "dynamodb:Query"],
    "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/CustomerRecords",
    "Condition": {
      "ForAllValues:StringEquals": {
        "dynamodb:LeadingKeys": ["${aws:PrincipalTag/department}"]
      }
    }
  }]
}&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;DynamoDB returns only the records from the user’s authorized department partition. Cross-department data is never returned because the IAM policy blocks the API call itself. It doesn’t rely on post-query filtering.&lt;/li&gt; 
 &lt;li&gt;The agent receives the authorized results and passes them to the LLM for natural language response composition.&lt;/li&gt; 
 &lt;li&gt;The composed response is returned to the frontend application and displayed to the user.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Pattern 2: User-scoped authorization to Amazon Bedrock Knowledge Bases&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;For documents stored in Amazon Bedrock Knowledge Bases, the agent applies metadata filtering at query time. Each document is tagged with a &lt;code class="CodeInline" style="color: #000"&gt;Department&lt;/code&gt; metadata attribute during ingestion. Amazon Bedrock Knowledge Bases using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/machine-learning/amazon-bedrock-knowledge-bases-now-supports-metadata-filtering-to-improve-retrieval-accuracy/" target="_blank" rel="noopener" data-cms-ai="0"&gt;metadata filtering&lt;/a&gt;&lt;/span&gt; to implement the data authorization. You need to provide metadata files alongside the source data files with the same name as the source data file and &lt;code class="CodeInline" style="color: #000"&gt;.metadata.json&lt;/code&gt; suffix while uploading data in Amazon S3. Amazon Bedrock Knowledge Bases ingests these documents along with corresponding metadata file. The metadata attributes are stored alongside the vectors as filterable fields in the index.&lt;/p&gt; 
&lt;p&gt;Each metadata file contains a simple JSON structure with the department attribute. The following example shows the complete content of a metadata file for Sales department documents:&lt;/p&gt; 
&lt;p&gt;&lt;code class="CodeInline" style="color: #000"&gt;{"metadataAttributes": {"Department": “Sales"}}&lt;/code&gt;&lt;/p&gt; 
&lt;p&gt;When the agent queries Amazon Bedrock Knowledge Bases, it calls the &lt;code class="CodeInline" style="color: #000"&gt;bedrock:Retrieve&lt;/code&gt; action and appends the &lt;code class="CodeInline" style="color: #000"&gt;retrievalConfiguration&lt;/code&gt; filter scoped to the user’s department. The department value is extracted from the JWT access token that the agent received during inbound authorization.&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;response = client.retrieve(
    knowledgeBaseId=KNOWLEDGE_BASE_ID,
    retrievalQuery={"text": user_query},
    retrievalConfiguration={
        "vectorSearchConfiguration": {
            "filter": {"equals": {"key": "Department", "value": department}}
        }
    }
)&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Metadata filtering is application-layer enforcement. The &lt;code class="CodeInline" style="color: #000"&gt;bedrock:Retrieve&lt;/code&gt; API doesn’t expose metadata filter content as an IAM condition key. For stricter isolation, consider separate knowledge bases per department with IAM resource-level policies.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Pattern 3: User-scoped access to external services using on-behalf-of token exchange&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;We use Salesforce as an example of an external service integration. The same on-behalf-of (OBO) token exchange pattern applies to external service that supports RFC 8693 or a compatible token exchange mechanism. External services like Salesforce don’t support IAM-based access control, so you need a different mechanism to propagate user identity. The AgentCore Identity OBO token exchange (RFC 8693) provides this by exchanging the user’s authenticated identity for a user-scoped token that the external service will recognize and enforce natively.&lt;/p&gt; 
&lt;p&gt;AgentCore Identity supports three OAuth patterns for external service access. With client credentials—Two-Legged OAuth (2LO) or machine-to-machine (M2M)—the agent authenticates as a service account and receives a token with broad access. The agent is then responsible for filtering data in queries, which makes this pattern suitable when accessing organization-wide data that isn’t scoped to an individual user. A variation of this pattern embeds user context as custom claims within the agent’s M2M token itself, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/security/empower-ai-agents-with-user-context-using-amazon-cognito/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Empower AI agents with user context using Amazon Cognito&lt;/a&gt;&lt;/span&gt;. With Authorization Code (3LO), the user explicitly consents through a browser redirect and the external service enforces per-user access. This works when per-service consent is required, but it demands user interaction during the flow, making it impractical for background agent operations. Learn more about this in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/machine-learning/secure-ai-agents-with-amazon-bedrock-agentcore-identity-on-amazon-ecs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Secure AI agents with Amazon Bedrock AgentCore Identity on Amazon ECS&lt;/a&gt;&lt;/span&gt;. With OBO token exchange, the user’s already-authenticated identity is exchanged for a service-scoped token without any additional user interaction, and the external service enforces access.&lt;/p&gt; 
&lt;p&gt;For this use case, OBO is the most appropriate pattern. The user has already authenticated at the entry point (through the IdP), and the agent needs to act on their behalf across multiple services without prompting for additional consent. OBO propagates user identity end-to-end without the agent holding credentials, scales automatically with no per-user token storage, and allows downstream services to enforce their own authorization (sharing rules, role-based access control (RBAC)). Because no browser redirect is needed, OBO works seamlessly for background tool calls where the user isn’t present in a browser session. Figure 4 demonstrates the complete flow when using OBO token exchange.&lt;/p&gt; 
&lt;p&gt;&lt;a href="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-4.png" rel="noopener" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div id="attachment_43395" style="width: 1176px" class="wp-caption aligncenter"&gt;
 &lt;a href="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-4.png" rel="noopener" target="_blank"&gt;&lt;img aria-describedby="caption-attachment-43395" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/propagate-user-authorization-Figure-4.png" alt="Figure 4: End-to-end user authorization flow for external access" width="1166" height="1128" class="size-full wp-image-43395"&gt;&lt;p id="caption-attachment-43395" class="wp-caption-text"&gt;Figure 4: End-to-end user authorization flow for external access&lt;/p&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;How it works:&lt;/b&gt;&lt;/p&gt; 
&lt;ol id="rte-62802641-8a48-11f1-9a93-2f261f489802" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;The user navigates to the web application.&lt;/li&gt; 
 &lt;li&gt;The user authenticates with Amazon Cognito using &lt;code class="CodeInline" style="color: #000"&gt;USER_PASSWORD_AUTH&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;A pre token generation Lambda function injects the custom department claim into the token (covered in the preceding &lt;b&gt;Initial user authentication with IdP&lt;/b&gt; section).&lt;/li&gt; 
 &lt;li&gt;Amazon Cognito returns the tokens to the frontend. The access token is issued with the department claim.&lt;/li&gt; 
 &lt;li&gt;The user asks the agent a question (for example, “Show me Sales opportunities”).&lt;/li&gt; 
 &lt;li&gt;The frontend calls AgentCore Runtime with a single agent Amazon Resource Name (ARN), passing the Amazon Cognito access token: &lt;code class="CodeInline" style="color: #000"&gt;POST /invocations, Authorization: Bearer {access_token}&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;AgentCore Runtime validates the inbound JWT (signature, expiration, issuer, and custom claims including the department claim). After successful validation, AgentCore Runtime extracts the user identity from the JWT and calls the GetWorkloadAccessTokenForJWT API to exchange it for a &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/get-workload-access-token.html#workload-access-token-overview" target="_blank" rel="noopener" data-cms-ai="0"&gt;workload access token&lt;/a&gt;&lt;/span&gt;. The agent code receives the workload access token through the invocation payload header. Workload access tokens are exclusively for accessing Amazon Bedrock AgentCore services and can’t be used directly for external services.&lt;/li&gt; 
 &lt;li&gt;The agent calls AgentCore Identity (&lt;code class="CodeInline" style="color: #000"&gt;GetResourceOauth2Token&lt;/code&gt;) with the workload access token, requesting a Salesforce token through the configured OBO (on-behalf-of) credential provider. AgentCore Identity validates the caller identity and agent identity, then accesses the stored client credentials from Secrets Manager. If a previously stored OAuth access token has expired, AgentCore Identity automatically obtains a new one using the client credentials, reducing the need for manual token lifecycle management in agent code. The agent code uses the &lt;code class="CodeInline" style="color: #000"&gt;@requires_access_token&lt;/code&gt; decorator to invoke this flow: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;@requires_access_token(
    provider_name="salesforce-token-exchange",
    scopes=[],
    auth_flow="ON_BEHALF_OF_TOKEN_EXCHANGE",
)
def _get_salesforce_token_sync(*, access_token: str) -&amp;gt; str:
    return access_token&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;p&gt;On the AWS side, this requires an AgentCore Identity OAuth Client configured with &lt;code class="CodeInline" style="color: #000"&gt;Grant type: Token Exchange&lt;/code&gt;, &lt;code class="CodeInline" style="color: #000"&gt;Actor token: None&lt;/code&gt;, pointing to the Salesforce token endpoint. The Salesforce Connected App consumer secret is stored in Secrets Manager (the agent doesn’t access it directly). &lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;AgentCore Identity performs RFC 8693 token exchange with the Salesforce token endpoint, sending the user identity as the &lt;code class="CodeInline" style="color: #000"&gt;subject_token&lt;/code&gt;. AgentCore Identity performs this secure token exchange for user-delegated access based on the configured OAuth 2.0 credential provider. The agent can’t request tokens for arbitrary users because the workload access token cryptographically binds the request to the authenticated user.&lt;/li&gt; 
 &lt;li&gt;Salesforce validates the token against the registered Amazon Cognito auth provider configured in Salesforce Setup.&lt;/li&gt; 
 &lt;li&gt;Salesforce resolves the user using &lt;code class="CodeInline" style="color: #000"&gt;FederationIdentifier&lt;/code&gt;. On the Salesforce side, this requires: 
  &lt;ul id="rte-08c4a2f0-8a4f-11f1-9a93-2f261f489802" class="rte2-style-ul"&gt; 
   &lt;li&gt;Amazon Cognito registered as an OpenID Connect auth provider&lt;/li&gt; 
   &lt;li&gt;A token exchange handler (Apex class extending &lt;code class="CodeInline" style="color: #000"&gt;Auth.Oauth2TokenExchangeHandler&lt;/code&gt;) that resolves users by &lt;code class="CodeInline" style="color: #000"&gt;FederationIdentifier&lt;/code&gt;&lt;/li&gt; 
   &lt;li&gt;Token exchange flow enabled on the connect app or external client app&lt;/li&gt; 
   &lt;li&gt;Each user’s &lt;code class="CodeInline" style="color: #000"&gt;FederationIdentifier&lt;/code&gt; set to their Amazon Cognito subject’s (&lt;code class="CodeInline" style="color: #000"&gt;sub&lt;/code&gt;) unique user identifier (UUID).&lt;/li&gt; 
   &lt;li&gt;Sharing rules configured to enforce department-scoped record access&lt;/li&gt; 
  &lt;/ul&gt; &lt;p&gt;The federation ID (&lt;code class="CodeInline" style="color: #000"&gt;sub&lt;/code&gt;) is immutable and can’t be spoofed by the agent, because it originates from the cryptographically signed identity token.&lt;/p&gt;&lt;/li&gt; 
 &lt;li&gt;Salesforce returns a user-scoped access token to AgentCore Identity, which passes it back to the agent.&lt;/li&gt; 
 &lt;li&gt;Agent calls the Salesforce REST API using the user-scoped token. No department filtering is needed in the Salesforce Object Query Language (SOQL) query because Salesforce enforces access through sharing rules: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;@tool
def query_salesforce_opportunities(query_text: str) -&amp;gt; str:
    access_token = _get_salesforce_token_sync()

    # No department filter needed. Salesforce sharing rules enforce access.
    soql = "SELECT Id, Name, Amount, StageName, CloseDate FROM Opportunity ORDER BY CloseDate DESC LIMIT 10"

    response = requests.get(
        f"{SALESFORCE_URL}/services/data/v59.0/query?q={urllib.parse.quote(soql)}",
        headers={"Authorization": f"Bearer {access_token}"},
        timeout=30,
    )
    return json.dumps(response.json().get("records", []))&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Salesforce applies sharing rules and returns only records the user is authorized to access. The agent doesn’t hold Salesforce credentials (refresh tokens, client secrets), these remain with AgentCore Identity.&lt;/li&gt; 
 &lt;li&gt;The agent’s LLM composes a response from the returned records.&lt;/li&gt; 
 &lt;li&gt;The frontend displays the results to the user.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Conclusion&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;In this post, you learned how to enforce consistent, end-to-end authorization in agentic AI applications by propagating user context from Amazon Cognito through Amazon Bedrock AgentCore to downstream resources. We showed you three patterns:&lt;/p&gt; 
&lt;ul id="rte-e8fa8e10-814f-11f1-b1cf-b74ae84fd501" class="rte2-style-ul"&gt; 
 &lt;li&gt;Per-request user-scoped credentials using &lt;code class="CodeInline" style="color: #000"&gt;AssumeRoleWithWebIdentity&lt;/code&gt; with session tags, evaluated by IAM attribute-based access control (ABAC) policies to access Amazon DynamoDB&lt;/li&gt; 
 &lt;li&gt;Department-scoped metadata filtering at the application layer to access Amazon Bedrock Knowledge Bases.&lt;/li&gt; 
 &lt;li&gt;On-behalf-of token exchange (RFC 8693) using AgentCore Identity, with Salesforce-native sharing rules governing access to external CRM data.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The key takeaway is that the agent coordinates work but doesn’t decide who can access what. Access decisions are made by infrastructure-level controls and the downstream service’s authorization model. This layered approach means that even if the agent behaves unexpectedly, unauthorized data access is still blocked.&lt;/p&gt; 
&lt;p&gt;You can use this as a reference implementation and adapt it to your requirements by choosing authorization attributes relevant to your organization (such as department, role, business unit, or region), integrating additional data sources, or extending the token exchange patterns to other external services.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Next steps&lt;/h2&gt; 
&lt;/div&gt; 
&lt;ul id="rte-e8fa8e11-814f-11f1-b1cf-b74ae84fd501" class="rte2-style-ul"&gt; 
 &lt;li&gt;Explore the sample code &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://github.com/aws-samples/sample-authorization-context-with-agentcore" target="_blank" rel="noopener" data-cms-ai="0"&gt;sample-authorization-context-with-agentcore&lt;/a&gt;&lt;/span&gt; for the complete reference implementation&lt;/li&gt; 
 &lt;li&gt;For a deeper overview of workload identities and credential management, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/security/securing-ai-agents-with-amazon-bedrock-agentcore-identity/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Securing AI agents with Amazon Bedrock AgentCore Identity&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;For the Authorization Code (3LO) pattern on self-hosted compute, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/machine-learning/secure-ai-agents-with-amazon-bedrock-agentcore-identity-on-amazon-ecs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Secure AI agents with Amazon Bedrock AgentCore Identity on Amazon ECS&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;For M2M token customization with embedded user context, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/security/empower-ai-agents-with-user-context-using-amazon-cognito/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Empower AI agents with user context using Amazon Cognito&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;For IAM scoping patterns in Model Context Protocol (MCP)-based agent architectures, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/security/secure-ai-agent-access-patterns-to-aws-resources-using-model-context-protocol/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Secure AI agent access patterns to AWS resources using MCP&lt;/a&gt;&lt;/span&gt;.&lt;/li&gt; 
 &lt;li&gt;For agent identity and permission management best practices, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/wellarchitected/latest/agentic-ai-lens/agentsec03.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AGENTSEC03 in the AWS Well-Architected Agentic AI Lens&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below. &lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/Anshu-Bathla.jpeg" alt="Anshu Bathla" width="120" height="160" class="aligncenter size-full wp-image-43402"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Anshu Bathla&lt;/h3&gt; 
  &lt;p&gt;Anshu is a Sr. Lead Consultant – Security at AWS, based in Gurugram, India. He works with customers across diverse verticals to help strengthen their security infrastructure and achieve their security goals. Outside of work, Anshu enjoys reading books and gardening at his home garden. Connect with him on &lt;a href="https://linkedin.com/in/anshu-bathla/" rel="noopener" target="_blank"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/Prafful-Gupta.jpg" alt="Prafful Gupta" width="120" height="160" class="aligncenter size-full wp-image-43400"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Prafful Gupta&lt;/h3&gt; 
  &lt;p&gt;Prafful is a DevOps Engineer at AWS, based in Gurugram, India. Having started his professional journey with Amazon, he specializes in DevOps and generative AI solutions, helping customers navigate their cloud transformation journeys. Beyond work, he enjoys networking with fellow professionals and spending quality time with family. Connect with him on &lt;a href="https://www.linkedin.com/in/praffulgupta11/" rel="noopener" target="_blank"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/18/Rohit-Verma.jpg" alt="Rohit Verma" width="120" height="160" class="aligncenter size-full wp-image-43401"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Rohit Verma&lt;/h3&gt; 
  &lt;p&gt;Rohit is a Delivery Consultant – Security, Risk and Compliance at AWS, based in Gurugram, India. He partners with customers across multiple industries to strengthen their security posture, leading risk consulting engagements, and security deliverable reviews. Outside of work, Rohit is a fitness enthusiast who enjoys music and reading non-fiction books. Connect with him on &lt;a href="http://linkedin.com/in/rohitverma242/" rel="noopener" target="_blank"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Implement custom authentication for tools integration using request Lambda interceptor in AgentCore Gateway</title>
		<link>https://aws.amazon.com/blogs/security/implement-custom-authentication-for-tools-integration-using-request-lambda-interceptor-in-agentcore-gateway/</link>
					
		
		<dc:creator><![CDATA[Nishant Mainro]]></dc:creator>
		<pubDate>Tue, 18 Aug 2026 20:46:26 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[Amazon Bedrock AgentCore]]></category>
		<category><![CDATA[AWS Lambda]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">3aec10cb2b5cd6dce963c0eb5ff06433c21290aa</guid>

					<description>When deploying AI agents with Amazon Bedrock AgentCore, organizations benefit from built-in modern support for OAuth 2.0, AWS Identity and Access Management (IAM), and API key authentication through Amazon Bedrock AgentCore Gateway. However, some enterprise environments still use legacy authentication mechanisms such as HTTP Basic Authentication (Basic Auth) (RFC 7617). The extensible architecture of AgentCore […]</description>
										<content:encoded>&lt;p&gt;When deploying AI agents with &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/bedrock/agentcore/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Bedrock AgentCore&lt;/a&gt;&lt;/span&gt;, organizations benefit from built-in modern support for OAuth 2.0, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/span&gt;, and API key authentication through &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/machine-learning/introducing-amazon-bedrock-agentcore-gateway-transforming-enterprise-ai-agent-tool-development/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Bedrock AgentCore Gateway&lt;/a&gt;&lt;/span&gt;. However, some enterprise environments still use legacy authentication mechanisms such as HTTP Basic Authentication (Basic Auth) (&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://datatracker.ietf.org/doc/html/rfc7617" target="_blank" rel="noopener" data-cms-ai="0"&gt;RFC 7617)&lt;/a&gt;&lt;/span&gt;. The extensible architecture of AgentCore Gateway enables support for these authentication mechanisms through a &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-interceptors.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;request Lambda interceptor&lt;/a&gt;&lt;/span&gt;—custom code that runs each time an agent calls a tool.&lt;/p&gt; 
&lt;p&gt;In this post, we show you how to use a request Lambda interceptor to authenticate to a downstream tool API using system credentials, retrieving a service account credential from &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/secrets-manager/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Secrets Manager&lt;/a&gt;&lt;/span&gt; and constructing a Basic Auth header. This design keeps credentials isolated from the agent, designed to mitigate exposure through model-driven behavior such as prompt injection.&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Important&lt;/b&gt;: Basic Auth is an antiquated technology that transmits credentials as Base64-encoded text and should not be used as a long-term authentication strategy. AWS recommends modernizing to OAuth 2.0, SAML, OpenID Connect, or IAM where possible. However, some organizations with legacy workloads choose to decouple authentication modernization from their agentic AI adoption, addressing each on independent timelines. If your environment requires Basic Auth integration as an interim measure, consult your AWS Solutions Architect to evaluate the security trade-offs before proceeding. We’re providing this post as a reusable implementation, but it shouldn’t be construed as an endorsement of Basic Auth, or considered suitable as a long-term solution.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Solution overview&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The solution uses a request Lambda interceptor in AgentCore Gateway to retrieve system credentials and construct a Basic Auth header for the downstream tool API. Figure 1 shows the end-to-end flow.&lt;/p&gt; 
&lt;div id="attachment_43371" style="width: 1012px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43371" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/17/image1-1.png" alt="Figure 1: Solution workflow" width="1002" height="748" class="size-full wp-image-43371"&gt;
 &lt;p id="caption-attachment-43371" class="wp-caption-text"&gt;Figure 1: Solution workflow&lt;/p&gt;
&lt;/div&gt; 
&lt;ol id="rte-3c0dfe00-91c9-11f1-b01e-4f9b3f5fd40a" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;The AI agent initiates a tool call over Model Context Protocol (MCP) to the gateway with an inbound JSON Web Token (JWT) issued by a configured identity provider (IdP). The MCP request body contains the tool name and any required parameters. The gateway’s inbound authentication layer validates the token against the IdP specified in the inbound authorizer configuration.&lt;/li&gt; 
 &lt;li&gt;After inbound authentication succeeds, the gateway invokes the request Lambda interceptor, passing the original request payload and headers, including the validated JWT and its embedded claims.&lt;/li&gt; 
 &lt;li&gt;The request Lambda interceptor re-validates the inbound JWT issued by the configured IdP as a defense-in-depth measure, then retrieves the system service account credential from Secrets Manager. The credential is a service account that authenticates the AI agent to the downstream tool.&lt;/li&gt; 
 &lt;li&gt;The interceptor then constructs a compliant Basic Auth header using the system credential and adds it to the outbound request. Because Basic Auth transmits credentials as Base64-encoded text (not encrypted), you must implement relevant compensating controls (e.g., ensure that all communication with the downstream tool API is over TLS, conduct two-person review of Lambda code changes, and so on).&lt;br&gt; 
  &lt;blockquote&gt;
   &lt;p&gt;&lt;b&gt;Note: &lt;/b&gt;The system credential stored in Secrets Manager corresponds to a service account in Active Directory (AD). The credential lifecycle requires a one-time manual seed: a system administrator creates the service account in AD and stores the same initial credential in Secrets Manager (necessary because Secrets Manager can’t read a password back from AD). As a security best practice, trigger an immediate rotation after seeding to retire the human-known password using the built-in capabilities of Secrets Manager. From that point forward, Secrets Manager automates the rotation process, periodically generates a new password, and updates both Secrets Manager and AD simultaneously. This eliminates manual credential management in either system. At runtime, the request Lambda interceptor retrieves the current credential from Secrets Manager and presents it to the downstream tool, which validates it against AD. For implementation details on keeping both stores synchronized, see&lt;i&gt; &lt;/i&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/modernizing-with-aws/rotate-active-directory-credentials-stored-in-aws-secrets-manager/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Rotate Active Directory credentials stored in AWS Secrets Manager.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/blockquote&gt; &lt;/li&gt; 
 &lt;li&gt;The AgentCore gateway forwards the adjusted request now carrying the custom authentication header to the downstream target tool.&lt;/li&gt; 
 &lt;li&gt;The downstream target tool authenticates the request, processes it, and returns the response to the gateway.&lt;/li&gt; 
 &lt;li&gt;The gateway relays the response back to the AI agent.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Implementation&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The following steps walk through configuring the request Lambda interceptor and implementing the core of the authentication transformation logic. You can find the complete sample code at &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://github.com/aws-samples/sample-blog-implementing-custom-authentication-using-request-lambda-interceptor" target="_blank" rel="noopener" data-cms-ai="0"&gt;Implementing custom authentication for tools integration using Request Lambda Interceptor&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;h3&gt;Step 1: Attach a request Lambda interceptor to your AgentCore Gateway&lt;/h3&gt; 
&lt;p&gt;Configure the AgentCore gateway to invoke a request Lambda interceptor for authentication transformation before forwarding the request to the downstream tool.&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Important&lt;/b&gt;: You must enable &lt;code class="CodeInline" style="color: #000"&gt;passRequestHeaders&lt;/code&gt; configuration. Without it, the request Lambda interceptor can’t receive the request header containing the inbound JWT, and the authentication pattern described in this post will not work.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;The following example shows the gateway configuration:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;import boto3 

bedrock_client = boto3.client('bedrock-agentcore-control', region_name='&amp;lt;your-region&amp;gt;') 
# e.g., region_name='us-west-2' 

bedrock_client.update_gateway( 
    gatewayIdentifier='&amp;lt;your-gateway-id&amp;gt;', 
    interceptorConfigurations=[
        { 
            'interceptor': { 
                'lambda': { 
                    'arn': 'arn:aws:lambda:&amp;lt;region&amp;gt;:&amp;lt;account-id&amp;gt;:function:&amp;lt;YourInterceptorFunction&amp;gt;' 
                } 
            }, 
            'interceptionPoints': ['REQUEST'], 
            'inputConfiguration': { 
                'passRequestHeaders': True 
            } 
        } 
    ] 
) &lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;h3&gt;Step 2: Validate the inbound JWT&lt;/h3&gt; 
&lt;p&gt;The interceptor independently validates the JWT signature as a defense-in-depth measure, protecting against scenarios where the request Lambda interceptor could be invoked through a path that bypasses gateway validation. It fetches the identity provider’s JSON Web Key Set (JWKS) (cached across warm Lambda invocations to avoid repeated network calls), verifies the token’s signature, expiration, and issuer, then returns the decoded claims.&lt;/p&gt; 
&lt;p&gt;The following code demonstrates JWT validation:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;  import jwt 
  from jwt import PyJWKClient 

  COGNITO_ISSUER = 
  f"https://cognito-idp.{COGNITO_REGION}.amazonaws.com/{YOUR_COGNITO_USER_POOL_I 
  D}" 
  jwk_client = PyJWKClient(f"{COGNITO_ISSUER}/.well-known/jwks.json") 

  def validate_jwt(token): 
      """Validate JWT signature and return decoded claims.""" 
      signing_key = jwk_client.get_signing_key_from_jwt(token) 
      return jwt.decode(token, signing_key.key, algorithms=["RS256"], 
  issuer=COGNITO_ISSUER) &lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;h3&gt;Step 3: Retrieve system credentials from Secrets Manager&lt;/h3&gt; 
&lt;p&gt;The interceptor retrieves the system service account credential from Secrets Manager. This credential authenticates the AI agent to the downstream tool. The secret is encrypted with a customer-managed &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/kms" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Key Management Service (AWS KMS)&lt;/a&gt;&lt;/span&gt; key and cached in memory for the configured time-to-live (TTL) to minimize API calls while ensuring rotated credentials are picked up promptly.&lt;/p&gt; 
&lt;p&gt;The following code retrieves the credential from Secrets Manager:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;  import boto3 
  secrets_client = boto3.client('secretsmanager') 

  def get_system_credentials(): 
      """Retrieve the system service account credential from Secrets Manager.""" 
      response = secrets_client.get_secret_value( 
          SecretId=os.environ['SYSTEM_CREDS_SECRET_NAME'] 
      ) 
      return json.loads(response['SecretString']) &lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;b&gt;IAM permissions:&lt;/b&gt; The interceptor’s execution role requires &lt;code class="CodeInline" style="color: #000"&gt;secretsmanager:GetSecretValue&lt;/code&gt; scoped to the specific secret Amazon Resource Name (ARN), and &lt;code class="CodeInline" style="color: #000"&gt;kms:Decrypt&lt;/code&gt; scoped to the KMS key used to encrypt it. Follow the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;principle of least privilege&lt;/a&gt;&lt;/span&gt; by restricting the resource ARN rather than using wildcards.&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; The agent doesn’t have access to Secrets Manager. Only the request Lambda interceptor—a deterministic function not influenced by model behavior—retrieves credentials. This isolation is designed to mitigate the risk of adversarial prompts instructing the model to access or exfiltrate authentication credentials, even if the agent is compromised.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;h3&gt;Step 4: Construct the Basic Auth header&lt;/h3&gt; 
&lt;p&gt;The request Lambda interceptor constructs the Basic Auth header using the system credential retrieved for the downstream tool.&lt;/p&gt; 
&lt;p&gt;The following code shows the core transformation logic.&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;  def build_system_auth_header(headers): 
      """Validate JWT and construct Basic Auth header with system credential.""" 
      auth_header = headers.get('Authorization', '') 
      if not auth_header.startswith('Bearer '): 
          return _error_response(401, "No Bearer token found in request.") 

      # Validate JWT (defense-in-depth) 
      claims = validate_jwt(auth_header[7:]) 
      if not claims: 
          return _error_response(401, "JWT validation failed.")
          
      # Retrieve system credential from Secrets Manager 
      creds = get_system_credentials()
      
      # Construct Basic Auth header (RFC 7617) 
      basic_auth_encoded = base64.b64encode( 
          f"{creds['username']}:{creds['password']}".encode() 

      ).decode() 
      headers['Authorization'] = f"Basic {basic_auth_encoded}" 
      return headers &lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;A request Lambda interceptor in Amazon Bedrock AgentCore Gateway can bridge the gap between the authentication patterns supported by the gateway and the authentication requirements of legacy tool APIs that haven’t yet migrated to modern authentication standards. As demonstrated in this post, the interceptor validates the inbound JWT, retrieves system credentials from Secrets Manager, and constructs the downstream tool’s Basic Auth header without modifying tool schemas or agent implementation.&lt;/p&gt; 
&lt;p&gt;This approach is an interim integration pattern, not a target architecture. It introduces a credential that must be synchronized between Secrets Manager and the tool’s identity store (such as Active Directory), adding operational overhead for rotation, drift detection, and lifecycle management. The recommended path is to modernize the downstream tool to accept OAuth 2.0, SAML, or OpenID Connect, eliminating stored credentials entirely. Until that modernization is complete, the interceptor isolates credential handling from the agent runtime, designed to help ensure that the agent—a non-deterministic system influenced by user prompts—does not have access to authentication secrets.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2024/02/12/nmainro.jpg" alt="Nashant Mainro" width="120" height="160" class="aligncenter size-full wp-image-33395"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Nishant Mainro&lt;/h3&gt; 
  &lt;p&gt;Nishant is a Senior Security Solutions Architect with Amazon Web Services, based in Atlanta, Georgia. He brings 17+ years of security experience, focusing on securing AI and agentic workloads. He enjoys architecting security controls at scale, including identity, authorization, and data access for AI agents, empowering customers to confidently build generative AI applications and protect their data on AWS.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2020/06/29/Ram-Ramani-Author.jpg" alt="Author" width="120" height="160" class="aligncenter size-full wp-image-14158"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Ram Ramani&lt;/h3&gt; 
  &lt;p&gt;Ram is a technology leader in AI security focusing on AI-driven software development, AI for security, and building secure agents. Ram advises leaders, developers and architects on how to make an organization AI-native and secure while benefiting from velocity provided by AI-driven development.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Security Hub Extended adds Supply Chain Security as its tenth category</title>
		<link>https://aws.amazon.com/blogs/security/security-hub-extended-adds-supply-chain-security-as-its-tenth-category/</link>
					
		
		<dc:creator><![CDATA[Michael Fuller]]></dc:creator>
		<pubDate>Tue, 18 Aug 2026 17:04:28 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[AWS Security Hub]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">9786ed2a272721cbd5f2de6fe3406851d0261565</guid>

					<description>Since February, we’ve grown AWS Security Hub Extended from 14 curated partners across 9 categories to 23 partners across 10. At Black Hat this month, 14 of those partners were at the Amazon Web Services (AWS) booth demoing live. Four of those partners delivered theater talks and ten were featured on SecurityLive streaming. We hosted […]</description>
										<content:encoded>&lt;p&gt;Since February, we’ve grown &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/security-hub" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Security Hub Extended&lt;/a&gt;&lt;/span&gt; from 14 curated partners across 9 categories to 23 partners across 10. At Black Hat this month, 14 of those partners were at the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt; booth demoing live. Four of those partners delivered theater talks and ten were featured on SecurityLive streaming. We hosted a partner reception that brought our leadership together with partner executives to plan what comes next. These are companies investing real engineering and real go-to-market (GTM) alongside us, and increasingly with each other, because the model resonates with the customers they’re talking to every day. The most common question we heard at the booth was when Supply Chain Security was coming.&lt;/p&gt; 
&lt;p&gt;It’s here. And that’s the thing I want to spend the most time on today, because it’s the category customers keep asking us about.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Supply Chain Security: The category customers have been asking for&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Software supply chain risk has moved from a security-team concern to a board-level conversation. SolarWinds showed what happens when a build system is compromised. Log4j showed what a single transitive dependency vulnerability can do at global scale. The xz utils backdoor showed the patience of a maintainer-compromise attack executed over years. Each demonstrated a different dimension of the same problem, and the pace is accelerating. Attackers know that a fast way into an enterprise is through the open source packages that enterprise unknowingly trust.&lt;/p&gt; 
&lt;p&gt;Every customer I talked to at Black Hat had this on their risk register. Most still hadn’t operationalized a solution, because doing so meant a standalone deployment, a new contract, a new console, and integration work their security team couldn’t prioritize. That’s the friction we aim to remove.&lt;/p&gt; 
&lt;p&gt;Security Hub Extended now offers Supply Chain Security with Chainguard and Socket as the curated partners. Supply Chain Security uses the same model as everything else in Extended. Every offering has pay-as-you-go pricing, one bill, no required long-term commitment. For enterprises that prefer to continue using the procurement process they always have, Security Hub Extended Private Offers are also available. These are committed term agreements with deeper discounts, the ability to aggregate spend across partners on a single AWS bill, and both monthly and annual payment options throughout the term. You pick the path that fits how you buy.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;What Chainguard does&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Chainguard gives you open source dependencies rebuilt from source in a hardened, verified build process, so what enters your environment is malware-resistant and provenance-backed. Their &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://www.chainguard.dev/unchained/malware-resistant-python-without-the-guesswork" target="_blank" rel="noopener" data-cms-ai="0"&gt;research shows&lt;/a&gt;&lt;/span&gt; that rebuilding from source would have stopped 98% of known malicious packages from ever reaching production. If you can’t verify the source, it never appears in the Chainguard repository. That’s the filter between the public registry and your developers.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;What Socket does&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Socket analyzes the actual behavior of open source packages to block malicious dependencies at the time of install. Not after a Common Vulnerability and Exposures (CVE) is published days or weeks later. At the moment the package tries to land in your environment, Socket flags it based on what it does, not what a database says about it. Its reachability analysis then tells you which vulnerabilities are exploitable from your code instead of drowning your team in noise. You pay for the distinct packages you check, not for how often your builds run.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Why they work together&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Together, Chainguard and Socket cover the two questions that matter:&lt;/p&gt; 
&lt;ul id="rte-d8b451b2-9a60-11f1-8710-8fdde2ae04ba" class="rte2-style-ul"&gt; 
 &lt;li&gt;Can I trust what I’m pulling in?&lt;/li&gt; 
 &lt;li&gt;Can I stop malicious components before they get built into my applications?&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Chainguard helps secure the foundation your code is built on. Socket secures the packages you pull into it. Both help protect your software supply chain regardless of where you deploy—across clouds or on-premises. Activate both through Security Hub Extended and their findings flow into Security Hub in OCSF (Open Cybersecurity Schema Framework) alongside everything else, so a supply chain risk is correlated and prioritized next to your endpoint, identity, and cloud signals. From there, it routes out to the downstream tools you’ve already integrated, so it fits the pipeline your builders run today.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;23 partners, 10 categories. Built on what customers asked for&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Every partner in Security Hub Extended is here because customers told us they needed that capability and that specific solution was already working for them. We add categories because the threat landscape evolves, and we add partners because customers point us to who’s solving those problems well. The goal is straightforward: Simplify adopting the security solutions your peers are already succeeding with, through the AWS relationship you already have.&lt;/p&gt; 
&lt;p&gt;The full set today spans endpoint, identity, email, network, data, browser, cloud, AI, security operations, and now supply chain. The 23 curated partners are 7AI, Britive, Chainguard, CrowdStrike, Cyera, Island, LayerX, Native Security, Noma, Okta, Oligo, Opti, Palo Alto Networks, Proofpoint, SailPoint, SentinelOne, Socket, Splunk, Sublime, Upwind, Varonis, Zenity, and Zscaler.&lt;/p&gt; 
&lt;p&gt;Our focus now is deepening integrations and reducing activation friction so these solutions work together, not in isolation. That’s where the real value compounds.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;What we’re building next&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Everything I’ve described so far is the commercial model working: Customers buying best-of-breed security through one AWS relationship with the flexibility they expect. But the bigger vision is the integration layer that makes these tools genuinely better together, not just easier to buy together.&lt;/p&gt; 
&lt;p&gt;The integration we’re most focused on is cross-partner correlation, turning signals from an endpoint solution, an identity solution, and a cloud solution into one exposure and one attack path instead of three disconnected alerts. Right alongside that, we’re dramatically reducing the activation, deployment, and integration friction so customers go from subscribing to seeing value in hours rather than weeks. Both efforts enable the curated solutions you already trust to deliver stronger outcomes together than they do apart.&lt;/p&gt; 
&lt;p&gt;That’s the build we’re accelerating with our partners now, and you’ll hear more leading into re:Invent.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Explore what’s available&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;If you’re running open source in production and don’t yet have supply chain visibility, start there. Activate Chainguard and Socket through the Security Hub console today. If you’re managing multiple security vendor relationships and want to understand what consolidation looks like with Security Hub Extended, talk to your AWS account team. Pricing for every partner is published on our &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/security-hub/pricing/" target="_blank" rel="noopener" data-cms-ai="0"&gt;pricing page&lt;/a&gt;&lt;/span&gt;, no sales call required. And if you’re already using Security Hub for posture management and threat detection, the Extended plan is available in the same console you already use.&lt;/p&gt; 
&lt;p&gt;We’re just getting started.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-41862" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/07/13/michael-fuller-author.jpg" alt="" width="120" height="160"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Michael Fuller&lt;/h3&gt; 
  &lt;p&gt;Michael has been with AWS for 16 years and led product for AWS Security Services for 11 years. Michael has 29 years in the industry and held several roles in product management, business development, and software development for IBM, Cisco, and Amazon. Michael has a Bachelor’s of Science in Computer Engineering from the University of Arizona and an MBA from the University of Washington.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Updates to your AWS Sign-In experience</title>
		<link>https://aws.amazon.com/blogs/security/updates-to-your-aws-sign-in-experience/</link>
					
		
		<dc:creator><![CDATA[Vaibhav Chowla]]></dc:creator>
		<pubDate>Mon, 17 Aug 2026 17:22:33 +0000</pubDate>
				<category><![CDATA[AWS Identity and Access Management (IAM)]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AWS IAM]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">0ef9a4a4acf7476852f5ffff8c25cb01a53fccbe</guid>

					<description>Amazon Web Services (AWS) is gradually introducing updates to the AWS Sign-In and sign-up experience to a limited number of customers. We’re sharing these changes so you will know what to expect as we gradually make the updated experience available to more customers. These updates include new options for creating and accessing AWS accounts. To […]</description>
										<content:encoded>&lt;div class="Page-articleBody"&gt; 
 &lt;div class="RichTextArticleBody RichTextBody"&gt; 
  &lt;p&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS) &lt;/a&gt;&lt;/span&gt;is gradually introducing updates to the AWS Sign-In and sign-up experience to a limited number of customers. We’re sharing these changes so you will know what to expect as we gradually make the updated experience available to more customers. These updates include new options for creating and accessing AWS accounts. To support these options and provide a more consistent experience, we’ve redesigned the AWS sign-in page and refreshed the session selection page. While some screens and interactions have changed, existing customers will continue using the same sign-in methods and credentials they use today. If you see a sign-in page that looks different from what you’re used to, this is an expected change.&lt;/p&gt; 
  &lt;p&gt;In this post, we walk through what’s new with screenshots so you’ll know what to expect. If your organization relies on the current sign-in interface for browser automation or scripted workflows, review these updates to understand how they might affect your configuration.&lt;/p&gt; 
  &lt;div class="RichTextHeading"&gt; 
   &lt;h2&gt;Redesigned Sign-In page&lt;/h2&gt; 
   &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;The AWS Sign-In page is getting a new look. Figure 1 shows the current sign-in page, where you choose between &lt;b&gt;Root user&lt;/b&gt; and &lt;b&gt;IAM user&lt;/b&gt; before entering your sign-in information.&lt;/p&gt; 
  &lt;div id="attachment_43373" style="width: 1634px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43373" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/17/Figure-1-Current-AWS-Sign-In-Page.jpeg" alt="Figure 1: Current AWS sign-in page" width="1624" height="968" class="size-full wp-image-43373"&gt;
   &lt;p id="caption-attachment-43373" class="wp-caption-text"&gt;Figure 1: Current AWS sign-in page&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;The redesigned sign-in page, shown in Figure 2, introduces a unified email entry point for signing in to AWS. &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Root users&lt;/a&gt;&lt;/span&gt; and customers using the new email-based sign-in method for AWS accounts created with the updated sign-up experience enter their email address and choose &lt;b&gt;Continue&lt;/b&gt;. AWS automatically determines the appropriate sign-in flow based on the email address provided.&lt;/p&gt; 
  &lt;p&gt;If you’re signing in as an &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;IAM user&lt;/a&gt;&lt;/span&gt;, choose &lt;b&gt;IAM User&lt;/b&gt; to continue to the IAM User Sign-In page. Enter your account ID or alias, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/span&gt; username, and password to sign in.&lt;/p&gt; 
  &lt;div id="attachment_43269" style="width: 1034px" class="wp-caption alignleft"&gt;
   &lt;img aria-describedby="caption-attachment-43269" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/figure-2-redesigned-aws-sign-in-page-1024x725.jpeg" alt="Figure 2: Redesigned AWS sign-in page" width="1024" height="725" class="size-large wp-image-43269" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43269" class="wp-caption-text"&gt;Figure 2: Redesigned AWS sign-in page&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;The redesigned page also includes sign-in options for customers whose AWS account was created using a supported identity provider, such as Google, GitHub, Apple, or an &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="http://Amazon.com" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon.com&lt;/a&gt;&lt;/span&gt; account. If you’re an existing AWS customer, continue using the same credentials you use today, and AWS will guide you through the appropriate sign-in experience. Sign-in with a supported identity provider is available only for AWS accounts that were created using that identity provider.&lt;/p&gt; 
  &lt;p&gt;If your organization uses &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam/identity-center" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS IAM Identity Center&lt;/a&gt;&lt;/span&gt; or IAM federation to access AWS, continue signing in through your organization’s access portal or federation URL. Your existing sign-in process doesn’t change.&lt;/p&gt; 
  &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Although you don’t need to take specific actions to benefit from these updates, if your setup depends on the current UI for automated tasks, you might notice changes. For the most reliable and stable experience, use the AWS supported options to grant programmatic access to your users. For more information, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds-programmatic-access.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;programmatic access options&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
  &lt;div class="RichTextHeading"&gt; 
   &lt;h3&gt;Try the redesigned sign-in experience&lt;/h3&gt; 
   &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;Before the redesigned sign-in experience becomes the default, AWS will display a banner on the existing sign-in page inviting you to try it, as shown in Figure 3. Selecting &lt;b&gt;Change to new experience&lt;/b&gt; takes you to the updated sign-in flow. The existing experience remains available until the redesigned experience becomes the default.&lt;/p&gt; 
  &lt;blockquote&gt; 
   &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; After you select &lt;b&gt;Change to new experience&lt;/b&gt;, you’ll continue to see the redesigned sign-in experience in that browser. To return to the existing experience while it’s still available, clear your browser cookies.&lt;/p&gt; 
  &lt;/blockquote&gt; 
  &lt;div id="attachment_43268" style="width: 1034px" class="wp-caption alignleft"&gt;
   &lt;img aria-describedby="caption-attachment-43268" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/figure-3-current-aws-sign-in-page-with-the-banner-to-try-the-redesigned-experience-1024x725.jpeg" alt="Figure 3: Current AWS sign-in page with the banner to try the redesigned experience" width="1024" height="725" class="size-large wp-image-43268" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43268" class="wp-caption-text"&gt;Figure 3: Current AWS sign-in page with the banner to try the redesigned experience&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;&lt;/p&gt; 
  &lt;div class="RichTextHeading"&gt; 
   &lt;h2&gt;Redesigned session selection experience&lt;/h2&gt; 
   &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;AWS supports multiple active account and role sessions, so you can stay signed in to more than one account at a time. We’ve redesigned the AWS session selection page with a refreshed look that simplifies viewing and managing your active sessions. When you return to AWS while you have active account or role sessions, the session selection page displays those sessions in one place, including the account, role, and recent sign-in information to help you identify the session you want to use, as shown in Figure 4.&lt;/p&gt; 
  &lt;div id="attachment_43375" style="width: 1545px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43375" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/17/Figure-4-New-session-selection-page.jpeg" alt="Figure 4: New session selection page" width="1535" height="1024" class="size-full wp-image-43375" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43375" class="wp-caption-text"&gt;Figure 4: New session selection page&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;From this page, you can select an existing session, sign out of one or all sessions, or add another AWS session. Choose &lt;b&gt;Add session&lt;/b&gt; to sign in to another AWS account while remaining signed in to your existing sessions.&lt;/p&gt; 
  &lt;div class="RichTextHeading"&gt; 
   &lt;h2&gt;Conclusion&lt;/h2&gt; 
   &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt; 
  &lt;p&gt;The redesigned AWS Sign-In and session selection pages provide an updated experience while continuing to support the sign-in methods you use today. If you’re an existing AWS customer, there’s no change to how you sign in to your account. We encourage users who rely on browser automation or other workflows that interact with the sign-in experience to review these updates and ensure their systems are compatible with the redesigned experience.&lt;/p&gt; 
  &lt;p&gt;To learn more, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/signin/latest/userguide/what-is-sign-in.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Sign-In&lt;/a&gt;&lt;/span&gt; User Guide. If you have questions or feedback, start a new thread in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://repost.aws/tags/TAO7Z4bI5hQVWMiYFs34QhIA/aws-identity-and-access-management" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;u&gt;IAM re:Post&lt;/u&gt;&lt;/a&gt;&lt;/span&gt; or reach out to &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://console.aws.amazon.com/support/home" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;u&gt;AWS Support&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;.&lt;br&gt; &lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/vaibhav-chowla-author.jpg" alt="" width="120" height="160" class="aligncenter size-full wp-image-23212"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Vaibhav Chowla&lt;/h3&gt; 
  &lt;p&gt;Vaibhav is a Senior Technical Product Manager at AWS, specializing in AWS Identity products. He focuses on enhancing user authentication and security, helping customers of all sizes solve complex identity and access management challenges. Outside of technology, Vaibhav enjoys traveling and exploring new cultures and cuisines.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/ella-segura-author.png" alt="Rodney Underkoffler" width="120" height="160" class="aligncenter size-full wp-image-38542"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Ella Segura&lt;/h3&gt; 
  &lt;p&gt;Ella Segura is a Principal Product Manager on the AWS Identity Customer Experience team. Based in Austin, TX, she focuses on making security foundations simple and accessible for builders at every stage. Outside of work, she enjoys cooking, reading, building Legos, and traveling to new places.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>AWS Certificate Manager will discontinue email validation to prove domain validation for certificates</title>
		<link>https://aws.amazon.com/blogs/security/aws-certificate-manager-will-discontinue-email-validation-to-prove-domain-validation-for-certificates/</link>
					
		
		<dc:creator><![CDATA[Adam Aboudi]]></dc:creator>
		<pubDate>Thu, 13 Aug 2026 21:23:00 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[AWS Certificate Manager]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">4209e7df35a0d51fff6e6a3dcf6566cdeeb89311</guid>

					<description>Today, we’re announcing that AWS Certificate Manager (ACM) will discontinue support for email-validated public certificates by September 30, 2027. If you use email validation for your ACM public certificates, you need to migrate to DNS validation before that date. This change aligns with the Certification Authority/Browser (CA/B) Forum’s industry-wide deprecation of email-based domain validation and […]</description>
										<content:encoded>&lt;p&gt;Today, we’re announcing that &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/certificate-manager/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Certificate Manager (ACM)&lt;/a&gt;&lt;/span&gt; will discontinue support for email-validated public certificates by September 30, 2027. If you use email validation for your ACM public certificates, you need to migrate to DNS validation before that date. This change aligns with the &lt;a href="https://cabforum.org/" rel="noopener" target="_blank"&gt;Certification Authority/Browser (CA/B) Forum’s&lt;/a&gt; industry-wide deprecation of email-based domain validation and gives you a full year to migrate ahead of the Forum’s March 2028 deadline.&lt;/p&gt; 
&lt;p&gt;In this blog post, we share the rationale for this change, the timeline, and the steps you can take to migrate your certificates to DNS validation.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Background&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The CA/B Forum sets the standards that browsers and certificate authorities must follow for publicly trusted certificates. In November 2025, they voted to end support for email-based domain validation effective March 15, 2028. After that date, certificates validated through email won’t be trusted by browsers, regardless of which certificate authority issued them.&lt;/p&gt; 
&lt;p&gt;ACM will be deprecating its email validation in-line with the CA/B Forum’s requirements, by September 30, 2027. The ACM timeline gives customers one year to migrate before the CA/B Forum’s hard deadline.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Timelines for these changes&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;If you currently use email validation for certificates requested from ACM, there are a few important dates that you should be aware of:&lt;/p&gt; 
&lt;ul id="rte-f0b9a200-8710-11f1-8985-ef824ecdeefd" class="tight" data-tight="true"&gt; 
 &lt;li&gt;&lt;b&gt;January&lt;/b&gt; &lt;b&gt;1, 2027&lt;/b&gt;: ACM will no longer offer email validation in new AWS Regions.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;March 31, 2027&lt;/b&gt;: ACM will no longer offer email validation for new certificate requests in any Region.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;September 30, 2027&lt;/b&gt;: ACM will no longer renew existing certificates that use email validation in any Region.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;March 15, 2028&lt;/b&gt;: Per the CA/B Forum, public certificate authorities can no longer use email-based domain validation to issue or renew publicly trusted certificates. Certificates issued before this date remain valid until they expire.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Check for existing email validated certificates&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;If you have any ACM issued public certificates, you can check whether any of them are email validated by using the AWS Management Console for ACM or the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cli" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Command Line Interface (AWS CLI)&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Identify email validated certificates using the ACM console&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Use the following steps in the console to find email validated certificates.&lt;/p&gt; 
&lt;ol id="rte-f0b9c911-8710-11f1-8985-ef824ecdeefd" class="rte2-style-ol" start="1" data-tight="true"&gt; 
 &lt;li&gt;Open the ACM &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="us-east-1.console.aws.amazon.com/acm/welcome" target="_blank" rel="noopener" data-cms-ai="0"&gt;console&lt;/a&gt;&lt;/span&gt;.&lt;/li&gt; 
 &lt;li&gt;Select the filters &lt;b&gt;Validation method = Email&lt;/b&gt; and &lt;b&gt;Type = Amazon Issued&lt;/b&gt; for a list of email validated certificates.&lt;/li&gt; 
 &lt;li&gt;Any certificates listed are public email-validated certificates and should be migrated before September 30, 2027.&lt;/li&gt; 
 &lt;p&gt;&lt;/p&gt;
 &lt;div id="attachment_43322" style="width: 2029px" class="wp-caption aligncenter"&gt;
  &lt;img aria-describedby="caption-attachment-43322" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/10/AWS-Certificate-Manager-Figure-1.png" alt="Figure 1: List of all public email validated certificates" width="2019" height="381" class="size-full wp-image-43322" style="border: 1px solid #bebebe"&gt;
  &lt;p id="caption-attachment-43322" class="wp-caption-text"&gt;Figure 1: List of all public email validated certificates&lt;/p&gt;
 &lt;/div&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Identify email-validated certificates using the AWS CLI&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Use the following commands to find email validated certificates.&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;# Discover email validated public certificates 
region="${1:-us-east-1}" 

aws acm list-certificates --region "$region" \ 
--query "CertificateSummaryList[?Type=='AMAZON_ISSUED'].CertificateArn" --output text | tr '\t' '\n' | while read -r arn; do aws acm describe-certificate --region "$region" --certificate-arn "$arn" \
--query 'Certificate.[DomainName,Type,DomainValidationOptions[0].ValidationMethod]' \ 
--output text done | awk -F'\t' '$3 == "EMAIL"' | column -t 

Usage: 
chmod +x list-email-validated-certs.sh 
./list-email-validated-certs.sh # default region, us-east-1 
./list-email-validated-certs.sh us-west-2 # another region
&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Migrate existing email validated certificates&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;To assist you in this migration, ACM is updating the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/acm/latest/APIReference/API_UpdateCertificateOptions.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;UpdateCertificateOptions&lt;/a&gt;&lt;/span&gt; API so you can switch a certificate’s validation method from email to DNS in place. This means the certificate Amazon Resource Name(ARN) will remain the same and no changes will be needed to your AWS resources that reference the certificate.&lt;/p&gt; 
&lt;p&gt;When you update a certificate to DNS validation, ACM provides a CNAME record to add to your DNS configuration, and you have 72 hours to add that record. During this window, the certificate continues to function normally on email validation. If the 72 hours elapse without a DNS update, the certificate stays active on email validation and you can retry when ready. After DNS validation is complete, ACM is designed to automatically renew your certificate before it expires without further manual intervention required. We recommend completing migration before September 30, 2027, so that ACM can keep your certificates up to date without interruption.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;To migrate using the console&lt;/b&gt;&lt;/p&gt; 
&lt;ol id="rte-f0b9f022-8710-11f1-8985-ef824ecdeefd" class="rte2-style-ol" start="1" data-tight="true"&gt; 
 &lt;li&gt;After you’ve identified a certificate that needs updating, open it and select &lt;b&gt;Update validation method &lt;/b&gt;at the top of the page.&lt;br&gt; 
  &lt;div id="attachment_43323" style="width: 1718px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43323" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/10/AWS-Certificate-Manager-Figure-2.png" alt="Figure 2: DNS Validation prompt when viewing an email validated public certificate." width="1708" height="986" class="size-full wp-image-43323" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43323" class="wp-caption-text"&gt;Figure 2: DNS Validation prompt when viewing an email validated public certificate.&lt;/p&gt;
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;After the update is triggered, you will see a &lt;b&gt;View DNS records&lt;/b&gt; flashbar at the top of the certificate page.&lt;br&gt; 
  &lt;div id="attachment_43324" style="width: 1823px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43324" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/10/AWS-Certificate-Manager-Figure-3.png" alt="Figure 3: View DNS validation records after updating validation method." width="1813" height="1061" class="size-full wp-image-43324" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43324" class="wp-caption-text"&gt;Figure 3: View DNS validation records after updating validation method.&lt;/p&gt;
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Select &lt;b&gt;View DNS Records&lt;/b&gt; in the flashbar to open a dialog box from which you can download the CSV file for the CNAME records to export to other DNS providers.&lt;br&gt; 
  &lt;div id="attachment_43325" style="width: 1746px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43325" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/10/AWS-Certificate-Manager-Figure-4.png" alt="Figure 4: Get DNS validation information from the dialog box" width="1736" height="1042" class="size-full wp-image-43325" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43325" class="wp-caption-text"&gt;Figure 4: Get DNS validation information from the dialog box&lt;/p&gt;
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;For Route 53 users, there is a &lt;b&gt;Create records in Route 53&lt;/b&gt; that makes the validation available as a one-click option.&lt;br&gt; 
  &lt;div id="attachment_43326" style="width: 1669px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43326" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/10/AWS-Certificate-Manager-Figure-5.png" alt="Figure 5: Create DNS validation records into Route 53" width="1659" height="471" class="size-full wp-image-43326" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43326" class="wp-caption-text"&gt;Figure 5: Create DNS validation records into Route 53&lt;/p&gt;
  &lt;/div&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;b&gt;To migrate using the AWS CLI:&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;For instructions on how to update certificates using the AWS CLI, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/acm/latest/userguide/email-to-dns-overview.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;email to DNS migration user guide.&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Alternatives after email validation is no longer available&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;ACM supports two validation methods for new certificates going forward:&lt;/p&gt; 
&lt;ul id="rte-f0b9a201-8710-11f1-8985-ef824ecdeefd" class="tight" data-tight="true"&gt; 
 &lt;li&gt;&lt;b&gt;DNS validation&lt;/b&gt; – Add a CNAME record to your DNS configuration. ACM automatically renews DNS-validated certificates as long as the record remains in place. We recommend this method for most use cases.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;HTTP validation for&lt;/b&gt; &lt;b&gt;CloudFront&lt;/b&gt; – ACM provides a unique token that you host at a well-known URL path on your domain. This method is only available for certificates used with &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/acm/latest/userguide/http-validation.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon CloudFront&lt;/a&gt;&lt;/span&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Both methods remove the manual approval step required by email validation and let ACM renew your certificates automatically.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Conclusion&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The deprecation of email validation and use of the new UpdateCertificateOptions API helps keep your certificates trusted and your applications running as industry standards evolve. The updated UpdateCertificateOptions API is designed to make this migration straightforward: switch your validation method in place, add the DNS record, and ACM is designed to handle renewals automatically from that point forward.&lt;/p&gt; 
&lt;p&gt;If you have questions or need assistance migrating, contact &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/support" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Support&lt;/a&gt;&lt;/span&gt; or start a new thread on the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://repost.aws/tags/TAJ7zd4vjzSfC_8JNlsbq2tA?forumID=206" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS re:Post ACM Forum&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/10/Adam-Aboudi.jpg" alt="Adam Aboudi" width="120" height="160" class="aligncenter size-full wp-image-43328"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Adam Aboudi&lt;/h3&gt; 
  &lt;p&gt;Adam is a Senior Technical Product Manager on the AWS Certificate Manager team. He focuses on helping customers simplify certificate lifecycle management and maintain strong security posture across their AWS environments. &lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/05/27/Poojil-Tripathi.png" alt="Poojil Tripathi" width="120" height="160" class="aligncenter size-full wp-image-42450"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Poojil Tripathi&lt;/h3&gt; 
  &lt;p&gt;Poojil is a Solutions Architect at AWS based out of Austin, TX. They work with AWS customers to help them design secure architectures for all types of workloads. They would like to remind you to dance like no one is watching, but encrypt like everyone is. &lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>How AWS IAM role manager rethinks the starting point for IAM roles</title>
		<link>https://aws.amazon.com/blogs/security/how-aws-iam-role-manager-rethinks-the-starting-point-for-iam-roles/</link>
					
		
		<dc:creator><![CDATA[Zach Jiang]]></dc:creator>
		<pubDate>Wed, 12 Aug 2026 22:16:55 +0000</pubDate>
				<category><![CDATA[AWS Identity and Access Management (IAM)]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[AWS IAM]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">78feaf308f4b9c7887c753842f9e760fd1b16a6c</guid>

					<description>When you build a new application or capability on Amazon Web Services (AWS), you want to focus on what you’re building. Getting a service running almost always begins with AWS Identity and Access Management (IAM). Many AWS services that act on your behalf need an IAM role, an identity the service assumes to access your […]</description>
										<content:encoded>&lt;p&gt;When you build a new application or capability on &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt;, you want to focus on what you’re building. Getting a service running almost always begins with &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/span&gt;. Many AWS services that act on your behalf need an IAM role, an identity the service assumes to access your resources with a defined set of permissions. You then author a trust policy so the service can assume the role, choose the permissions the workload needs, and attach it. Configuring roles and policies for common patterns is repeatable work that doesn’t need to be manual.&lt;/p&gt; 
&lt;p&gt;IAM role manager does that work for you. When role manager is enabled, AWS creates and configures the IAM roles as you build in supported service consoles, so you can start using a service and let AWS handle the role behind it. You create the resource you want, and role manager provisions and attaches the role you need as part of the same flow, so you can build now and refine permissions as your workload matures.&lt;/p&gt; 
&lt;p&gt;With that step automated, getting started takes minutes. You can create an &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/lambda" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Lambda&lt;/a&gt;&lt;/span&gt; function and start running your code, with its execution role already created and attached, without switching context to set one up. Role creation becomes an automated part of building your application rather than a separate step.&lt;/p&gt; 
&lt;p&gt;Role manager is especially useful when you’re getting started: the moments when you want to stand up a service or get a proof of concept running and want to defer role configuration until later in your development process. You don’t need prior IAM experience to get started. You keep full control of what it creates, because the roles are ordinary IAM roles that you can view, edit, or delete like any role you author yourself. When you want to tighten a role, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam/access-analyzer" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS IAM Access Analyzer&lt;/a&gt;&lt;/span&gt; reviews how it has been used and recommends a policy scoped to only the permissions it needs.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;How to enable role manager&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Role manager has two states, enabled and disabled. Enabling it for an account authorizes AWS to create roles in that account. In an organization, administrators can use a service control policy (SCP) to control whether member accounts can enable or use role manager. To enable it:&lt;/p&gt; 
&lt;ol id="rte-0b6c8890-8b9b-11f1-a645-1d1ac6419103" class="tight" start="1" data-tight="true"&gt; 
 &lt;li&gt;Open the IAM console and choose &lt;b&gt;Account settings&lt;/b&gt;.&lt;/li&gt; 
 &lt;li&gt;In the &lt;b&gt;role manager&lt;/b&gt; section, choose &lt;b&gt;Enable&lt;/b&gt;.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;/p&gt; 
&lt;div id="attachment_43282" style="width: 2084px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43282" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/Figure-1-role-manager.png" alt="Figure 1: Enable Role Manager" width="2074" height="1178" class="size-full wp-image-43282" style="border: 1px solid #bebebe"&gt;
 &lt;p id="caption-attachment-43282" class="wp-caption-text"&gt;Figure 1: Enable Role Manager&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt; 
&lt;p&gt;Some AWS services already create a role for you when you create a resource that needs one. Role manager doesn’t change that: those services keep creating roles automatically, and roles you already created keep working. What role manager adds is a single account-level control, and coverage for a case that built-in flows can’t handle: tasks whose permissions AWS can’t determine in advance, such as running your own code. For those tasks, role manager provisions a role that you can narrow later.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Example: Create an Amazon EventBridge rule&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Start with a common task: an &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/eventbridge" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon EventBridge&lt;/a&gt;&lt;/span&gt; rule that invokes a target, such as an &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/sqs" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Simple Queue Service (Amazon SQS)&lt;/a&gt;&lt;/span&gt; queue or an &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/sns" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Simple Notification Service (Amazon SNS)&lt;/a&gt;&lt;/span&gt; topic. Without role manager, you would pause here to create a role that lets EventBridge invoke the target, write the role’s trust policy, attach the required permissions, and then return to finish the rule. With role manager enabled, you define the rule and its target, choose &lt;b&gt;Create&lt;/b&gt;, and role manager provisions the role and attaches it for you. The EventBridge console shows the rule created and ready, and you never open the role-creation flow.&lt;/p&gt; 
&lt;div id="attachment_43283" style="width: 1414px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43283" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/Figure-2-iam-role.png" alt="Figure 2: Creating an EventBridge rule with no manual role setup" width="1404" height="1218" class="size-full wp-image-43283" style="border: 1px solid #bebebe"&gt;
 &lt;p id="caption-attachment-43283" class="wp-caption-text"&gt;Figure 2: Creating an EventBridge rule with no manual role setup&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;The role comes from an AWS managed role template: a definition AWS builds and maintains for a specific task, with the trust policy and permissions already worked out. The console calls a new IAM API, AcquireRole, which finds the matching template, provisions the role from it, and returns it to EventBridge. Depending on the service, AcquireRole either creates a new role or reuses one that already fits, so an account does not fill up with duplicate roles for the same task.&lt;/p&gt; 
&lt;p&gt;Role manager creates the role using your own IAM permissions, not a separate role-manager permission. To provision a new role, you need permission for the actions the template performs: at minimum, you need permissions to create and attach roles. When &lt;code class="CodeInline" style="color: #000"&gt;AcquireRole&lt;/code&gt; reuses an existing role instead of creating one, it needs only &lt;code class="CodeInline" style="color: #000"&gt;iam:GetRole&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;iam:GetRoleTemplateVersion&lt;/code&gt;. If you’re missing either of these permissions, the console tells you which one is needed rather than creating the role.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Run code that calls other AWS services&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Not every task has a set of permissions AWS can define in advance. When a role runs your own code, such as a Lambda function, AWS has no way of knowing which services that code will call. Role manager covers this case too: create a Lambda function with role manager enabled, and it attaches an execution role that your code can use right away and that you can narrow once you know what the function calls.&lt;/p&gt; 
&lt;p&gt;Because the permissions your code needs aren’t known up front, role manager attaches the AWS managed policy &lt;code class="CodeInline" style="color: #000"&gt;PowerUserAccess&lt;/code&gt; to the role. &lt;code class="CodeInline" style="color: #000"&gt;PowerUserAccess&lt;/code&gt; grants access to AWS services so your function can call what it needs. By design, it doesn’t grant permission to manage IAM, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/organizations" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Organizations&lt;/a&gt;&lt;/span&gt;, or account settings. The template also configures the role to trust only the Lambda service.&lt;/p&gt; 
&lt;div id="attachment_43344" style="width: 1012px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43344" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/11/Figure-3r-IAM.png" alt="Figure 3: Create an AWS Lambda function with no manual role setup" width="1002" height="845" class="size-full wp-image-43344" style="border: 1px solid #bebebe"&gt;
 &lt;p id="caption-attachment-43344" class="wp-caption-text"&gt;Figure 3: Create an AWS Lambda function with no manual role setup&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;Role manager attaches an execution role, and your function is ready to run. Figure 4 shows the Execution role panel on the function’s &lt;strong&gt;Configuration&lt;/strong&gt; tab, with the role that role manager attached.&lt;/p&gt; 
&lt;div id="attachment_43345" style="width: 1011px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43345" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/11/Figure-4r-IAM.png" alt="Figure 4: Role manager provides a role automatically to an AWS Lambda function" width="1001" height="575" class="size-full wp-image-43345" style="border: 1px solid #bebebe"&gt;
 &lt;p id="caption-attachment-43345" class="wp-caption-text"&gt;Figure 4: Role manager provides a role automatically to an AWS Lambda function&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;You can open the role in the IAM console to review its permissions. Figure 5 shows the role’s &lt;strong&gt;Permissions&lt;/strong&gt; tab with the &lt;code style="color: #000000"&gt;PowerUserAccess&lt;/code&gt; policy attached.&lt;/p&gt; 
&lt;div id="attachment_43346" style="width: 1012px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43346" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/11/Figure-5r-IAM.png" alt="Figure 5: Permissions of the role provided by role manager for an AWS Lambda function" width="1002" height="889" class="size-full wp-image-43346" style="border: 1px solid #bebebe"&gt;
 &lt;p id="caption-attachment-43346" class="wp-caption-text"&gt;Figure 5: Permissions of the role provided by role manager for an AWS Lambda function&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;You keep full visibility into what role manager creates. Every role it creates records the role template it came from, and both &lt;code class="CodeInline" style="color: #000"&gt;GetRole&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;ListRoles&lt;/code&gt; return that template reference. You can inspect any role in your account and tell which were created by role manager. You read a role’s trust policy and permissions the same way you would for a role you authored, and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cloudtrail" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS CloudTrail&lt;/a&gt;&lt;/span&gt; records each role’s creation.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Refining roles as workloads mature&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;As your workloads mature, refine the roles that role manager created to follow least privilege. When you’re ready, you can disable role manager. If AWS enabled role manager for your account as part of the new AWS experience, you get IAM Access Analyzer unused access analysis at no additional cost for 90 days the first time you disable role manager. Access Analyzer looks at how each role has been used and recommends a policy you can apply that keeps only the permissions the role needs. Start with the roles attached to your most critical workloads and work outward.&lt;/p&gt; 
&lt;p&gt;Disabling role manager doesn’t disrupt anything already running: your resources keep the roles they have, those roles stay in your account until you change them, and from that point you author new roles yourself, the same as before. If you would rather narrow a single role than the whole account, editing that role removes it from role manager’s control and it becomes a standard customer-managed role, with your changes preserved. In sandbox or development accounts, keeping role manager enabled saves time. For production workloads, disable role manager and refine the roles it created to least privilege before going live.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Role manager automates IAM role setup so you can focus on building from the start. When you enable it, AWS creates and attaches the IAM roles your resources need as you build, so you can start in minutes without prior IAM experience. Because these are IAM roles that you fully control, you keep the same visibility and the same tools you already use. Keep role manager enabled while you build, and refine the roles it created as your workloads mature.&lt;/p&gt; 
&lt;p&gt;To get started, enable role manager in the IAM console and create a resource in a supported service. To learn more, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;IAM role creation&lt;/a&gt;&lt;/span&gt; and the list of supported services in the IAM User Guide.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/12/Zach-Jiang.png" alt="Zach Jiang" width="120" height="160" class="aligncenter size-full wp-image-43351"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Zach Jiang&lt;/h3&gt; 
  &lt;p&gt;Zach is a Senior Technical Product Manager at AWS, specializing in AWS Identity products. He focuses on making identity the easy part of building on AWS for customers. Outside of technology, Zach enjoys traveling and exploring new cultures and cuisines.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/David-Sing.jpg" alt="David Sing" width="120" height="160" class="aligncenter size-full wp-image-43292"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;David Sing&lt;/h3&gt; 
  &lt;p&gt;David is a Principal Product Manager at AWS, specializing in AWS IAM. He focuses on simplifying IAM for builders and AI agents, safe credential issuance for AI agents, and authorization policy governing agent access. Outside of technology, David enjoys economics and markets, fishing, and time outdoors with his family.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/Punit-Deotale.jpg" alt="Punit Deotale" width="120" height="160" class="aligncenter size-full wp-image-43293"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Punit Deotale&lt;/h3&gt; 
  &lt;p&gt;Punit is a Software Development Manager on the AWS IAM team. He leads work on making it easier for customers to create and manage IAM roles directly within AWS service workflows, so they can set up the right permissions without leaving what they are doing. His focus is reducing permission-setup friction across AWS while helping customers stay aligned with least privilege. Outside of work, Punit enjoys reading, building side projects, and being outdoors.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Landing Zone Accelerator Independent Assessment Report for C5:2020 now available on AWS Artifact</title>
		<link>https://aws.amazon.com/blogs/security/landing-zone-accelerator-independent-assessment-report-for-c52020-now-available-on-aws-artifact/</link>
					
		
		<dc:creator><![CDATA[Kevin Donohue]]></dc:creator>
		<pubDate>Tue, 11 Aug 2026 21:50:28 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[AWS Artifact]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">94b2fc04e45cdceabf0a6c01d9e18fb4aa70af2a</guid>

					<description>Organizations operating in Germany and across Europe increasingly need to demonstrate cloud security compliance under the Cloud Computing Compliance Criteria Catalogue (C5:2020), published by Germany’s Federal Office for Information Security (BSI). Last year, we introduced Landing Zone Accelerator on AWS support for digital sovereignty and today we’re announcing the availability of a new independent assessment […]</description>
										<content:encoded>&lt;p&gt;Organizations operating in Germany and across Europe increasingly need to demonstrate cloud security compliance under the &lt;a href="https://aws.amazon.com/compliance/bsi-c5/" target="_blank" rel="noopener noreferrer"&gt;Cloud Computing Compliance Criteria Catalogue (C5:2020)&lt;/a&gt;, published by Germany’s Federal Office for Information Security (BSI). Last year, we introduced &lt;a href="https://aws.amazon.com/blogs/security/introducing-new-regional-implementations-of-landing-zone-accelerator-on-aws-to-support-digital-sovereignty/" target="_blank" rel="noopener noreferrer"&gt;Landing Zone Accelerator on AWS support for digital sovereignty&lt;/a&gt; and today we’re announcing the availability of a &lt;a href="https://us-east-1.console.aws.amazon.com/artifact/v2/reports/details/report-yO6Kzy3KtcJ0I7fr?region=us-east-1" target="_blank" rel="noopener noreferrer"&gt;new independent assessment report&lt;/a&gt; available on &lt;a href="https://aws.amazon.com/artifact/" target="_blank" rel="noopener noreferrer"&gt;AWS Artifact&lt;/a&gt; which evaluates how the Landing Zone Accelerator (LZA) on AWS solution provides enhanced coverage for C5:2020 requirements by implementing nearly 200 native security controls. LZA is available using a standard multi-account configuration or as a container-based deployment option in the &lt;a href="https://aws.eu/" target="_blank" rel="noopener noreferrer"&gt;AWS European Sovereign Cloud&lt;/a&gt;, enabling customers with data residency requirements to use the same security configuration baseline.&lt;/p&gt; 
&lt;h2&gt;&lt;strong&gt;How this accelerates your compliance journey&lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;Security and compliance are a shared responsibility. LZA takes on part of this responsibility by defining a security architecture baseline and automatically provisioning your AWS environment that scales as your organization grows. Where AWS already provides &lt;a href="https://aws.amazon.com/blogs/security/aws-achieves-2025-c5-type-2-attestation-report-with-183-services-in-scope/" target="_blank" rel="noopener noreferrer"&gt;C5 Type 2 attestation reports&lt;/a&gt; for “security of the cloud”, the LZA assessment report offers an independent opinion of how the security baseline LZA provisions aligns with C5:2020 criteria for “security in the cloud”. Instead of starting from scratch, you can deploy with LZA, evaluate the scope of coverage from the report, and use the LZA Compliance Workbook to build on and customize for your organization’s unique use case. These resources can help you reduce time in architecture design, evidence collection, and preparation for C5:2020 assessments. The free LZA Compliance Workbook available on AWS Artifact and open source &lt;a href="https://github.com/aws/lza-universal-configuration/tree/main/docs" target="_blank" rel="noopener noreferrer"&gt;Universal Configuration GitHub repository&lt;/a&gt; are also excellent sources to add to a knowledge base, enabling you to &lt;a href="https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.html" target="_blank" rel="noopener noreferrer"&gt;create a security compliance chat agent with Bedrock&lt;/a&gt; to assist your governance or assurance teams.&lt;/p&gt; 
&lt;h2&gt;&lt;strong&gt;What’s in the report&lt;/strong&gt;&lt;/h2&gt; 
&lt;p&gt;&lt;a href="https://partners.amazonaws.com/partners/0010L00001uzpMLQAY/Schellman%20Compliance%2C%20LLC" target="_blank" rel="noopener noreferrer"&gt;AWS Partner Schellman&lt;/a&gt;, an independent third-party assessor, evaluated the &lt;a href="https://github.com/aws/lza-universal-configuration/blob/main/docs/assets/images/lza-uc-architecture.png" target="_blank" rel="noopener noreferrer"&gt;LZA Universal Configuration architecture&lt;/a&gt; and security control baseline, which maps to C5:2020 controls in the LZA Compliance Workbook, to determine how the LZA infrastructure aligns to C5:2020 technical requirements. The report concluded that LZA can help implement 325 security controls in aggregate, aligning to technical requirements from eight C5:2020 control areas. It also describes the LZA architecture design, security best practices, and scoping considerations for C5:2020 assessments. This is the first installation of the independent C5 report for LZA, which will be updated in 2027 to evaluate coverage for the pending &lt;a href="https://www.bsi.bund.de/EN/Themen/Unternehmen-und-Organisationen/Informationen-und-Empfehlungen/Empfehlungen-nach-Angriffszielen/Cloud-Computing/Kriterienkatalog-C5/C5_2025/C5_2025_node.html" target="_blank" rel="noopener noreferrer"&gt;C5:2026 revision&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;In addition to the LZA C5:2020 report, you can also find the LZA Compliance Workbook available on AWS Artifact. It maps C5:2020 requirement identifiers to security implementation statements, giving you a starting point from which you can customize and enhance your compliance documentation for your unique workloads or operational practices after deploying LZA.&lt;/p&gt; 
&lt;h2&gt;&lt;strong&gt;Getting started with LZA for C5&lt;/strong&gt;&lt;/h2&gt; 
&lt;ol&gt; 
 &lt;li&gt;Sign in to your AWS account first and then download the &lt;a href="https://us-east-1.console.aws.amazon.com/artifact/v2/reports/details/report-yO6Kzy3KtcJ0I7fr?region=us-east-1" target="_blank" rel="noopener noreferrer"&gt;LZA C5:2020 Independent Assessment Report&lt;/a&gt; and &lt;a href="https://us-east-1.console.aws.amazon.com/artifact/v2/reports/details/report-2qxiJVQcB8Y6i4h4" target="_blank" rel="noopener noreferrer"&gt;LZA Compliance Workbook&lt;/a&gt; from AWS Artifact.&lt;/li&gt; 
 &lt;li&gt;Visit the &lt;a href="https://github.com/aws/lza-universal-configuration/tree/main" target="_blank" rel="noopener noreferrer"&gt;LZA Universal Configuration GitHub repository&lt;/a&gt; to review and download the latest configuration baseline. Also, see guidance for European Sovereign Cloud LZA deployments.&lt;/li&gt; 
 &lt;li&gt;The &lt;a href="https://docs.aws.amazon.com/solutions/latest/landing-zone-accelerator-on-aws/solution-overview.html" target="_blank" rel="noopener noreferrer"&gt;LZA Implementation Guide&lt;/a&gt; walks you through deployment steps, use cases, and pre-deployment considerations.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;To learn more, &lt;a href="https://pulse.amazon/survey/U8ONBU8F" target="_blank" rel="noopener noreferrer"&gt;submit a question to a LZA team member&lt;/a&gt; or contact your AWS account representative.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-29953" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2023/06/22/Kevin-Donohue.jpg" alt="Kevin Donohue" width="120" height="160"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Kevin Donohue&lt;/h3&gt; 
  &lt;p&gt;Kevin is a Senior Security Compliance Engineer at AWS, where he builds solutions and resources to help AWS customers achieve their security and compliance goals. Prior to joining the Landing Zone Accelerator team in AWS Professional Services in 2024, Kevin began his tenure with AWS Security in 2019 specializing in FedRAMP compliance and the shared responsibility model.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt;
   &lt;img loading="lazy" class="aligncenter size-full wp-image-43248" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/06/Michael-Wahlers.jpg" alt="Michael Wahlers" width="120" height="160"&gt;
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Michael Wahlers&lt;/h3&gt; 
  &lt;p&gt;Michael is a Principal Solutions Architect and Public Sector Specialist working across Germany, Austria, and Switzerland. With passionate enthusiasm, he supports public institutions with innovative digital solutions. His expertise ensures seamless service delivery, making him a valuable asset in shaping the digital future of the public sector. He also enjoys exploring complex distributed systems and incorporating local contexts into his work.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Summer 2026 SOC 1 report is now available with 185 services in scope</title>
		<link>https://aws.amazon.com/blogs/security/summer-2026-soc-1-report-is-now-available-with-185-services-in-scope/</link>
					
		
		<dc:creator><![CDATA[Baj Bajwa]]></dc:creator>
		<pubDate>Tue, 11 Aug 2026 18:53:08 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[AWS SOC Reports]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[SOC]]></category>
		<guid isPermaLink="false">93261c1c2137828b677ed97f869d83cdb4885758</guid>

					<description>Amazon Web Services (AWS) is pleased to announce that the Summer 2026 System and Organization Controls (SOC) 1 report is now available. The reports cover 185 services over the 12-month period from July 1, 2025–June 30, 2026, giving customers a full year of assurance. These reports demonstrate our continuous commitment to adhering to the heightened […]</description>
										<content:encoded>&lt;div class="Page-articleBody"&gt; 
 &lt;div class="RichTextArticleBody RichTextBody"&gt; 
  &lt;p&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt; is pleased to announce that the Summer 2026 System and Organization Controls (SOC) 1 report is now available. The reports cover 185 services over the 12-month period from July 1, 2025–June 30, 2026, giving customers a full year of assurance. These reports demonstrate our continuous commitment to adhering to the heightened expectations of cloud service providers.&lt;/p&gt; 
  &lt;p&gt;Customers can download the Summer 2026 SOC 1 report through AWS Artifact, a self-service portal for on-demand access to AWS compliance reports. Sign in to &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://console.aws.amazon.com/artifact" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Artifact in the AWS Management Console&lt;/a&gt;&lt;/span&gt;, or learn more at &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/artifact/getting-started/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Getting Started with AWS Artifact&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
  &lt;p&gt;AWS strives to continuously bring services into the scope of its compliance programs to help customers meet their architectural and regulatory needs. You can view the current list of services in scope on our &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/services-in-scope/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Services in Scope page&lt;/a&gt;&lt;/span&gt;. As an AWS customer, you can reach out to your AWS account team if you have any questions or feedback about SOC compliance.&lt;br&gt; &lt;br&gt; To learn more about AWS compliance and security programs, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/programs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Compliance Programs&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
  &lt;hr&gt; 
  &lt;footer&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;div class="blog-author-image"&gt; 
     &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/05/27/Baj-Bajwa.jpg" alt="Baj Bajwa" width="120" height="160" class="aligncenter size-full wp-image-42455"&gt; 
    &lt;/div&gt; 
    &lt;h3 class="lb-h4"&gt;Baj Bajwa&lt;/h3&gt; 
    &lt;p&gt;Baj is a Security Assurance Manager at AWS, where he leads the Global Third-Party Assurance product portfolio within the Compliance and Security Assurance (CSA) organization. He has over 15 years of experience in information security, compliance, and risk management, and holds a master’s degree in cybersecurity. Baj maintains CISSP, CISA, PMP, CCSK, GISF, and ICAgile certifications.&lt;/p&gt; 
    &lt;p&gt;&lt;/p&gt;
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2025/03/21/tusajain.jpg" alt="Tushar Jain" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Tushar Jain&lt;/span&gt;&lt;br&gt;Tushar is a Compliance Program Manager at AWS where he leads multiple security and privacy initiatives Tushar holds a Master of Business Administration from Indian Institute of Management Shillong, India and a Bachelor of Technology in electronics and telecommunication engineering from Marathwada University, India. He has over 14 years of experience in information security and holds CISM, CCSK and CSXF certifications.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2024/02/20/murphman.jpg" alt="Michael Murphy" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Michael Murphy&lt;/span&gt;&lt;br&gt;Michael is a Compliance Program Manager at AWS where he leads multiple security and privacy initiatives. Michael has over 14 years of experience in information security and holds a master’s degree and a bachelor’s degree in computer engineering from Stevens Institute of Technology. He also holds CISSP, CRISC, CISA, and CISM certifications.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/04/20/jeff-cheung-author.jpg" alt="Jeff Cheung" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Jeff Cheung&lt;/span&gt;&lt;br&gt;Jeff is a Compliance Program Manager at AWS where he leads multiple security and privacy initiatives across business lines. Jeff has Bachelors degrees in Information Systems, and Economics from SUNY Stony Brook, and has over 20 years of experience in information security and assurance. Jeff has held professional certifications such as CISA, CISM, and PCI-QSA.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/Logan-Moore-author.jpg" alt="Logan Moore" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Logan Moore&lt;/span&gt;&lt;br&gt;Logan is a Compliance Program Manager at AWS where he leads multiple security and compliance initiatives. Logan has over 10 years of experience in information security and holds a Bachelor’s Degree in Information Systems Management from Virginia Polytechnic Institute and State University.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/01/23/noah-miller-author.jpg" alt="Noah Miller" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Noah Miller&lt;/span&gt;&lt;br&gt;Noah is a Compliance Program Manager at AWS and leads multiple security and privacy initiatives. Noah has 7 years of experience in information security. He has a master’s degree in Cybersecurity Risk Management and a bachelor’s degree in Informatics from Indiana University.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/01/12/willblack.wblackjr.jpg" alt="Will Black" style="margin-left: 12px;margin-right:18px;margin-top: 12px;margin-bottom: 6px;width:93.750px;height: 125px"&gt;
    &lt;span class="lb-h4" style="line-height: 2.1em;padding-top: 12px;margin-top: 24px"&gt;Will Black&lt;/span&gt;
    &lt;br&gt;Will is a Compliance Program Manager at Amazon Web Services where he leads multiple security and compliance initiatives. Will has 10 years of experience in compliance and security assurance and holds a degree in Management Information Systems from Temple University. Additionally, he is a PCI Internal Security Assessor (ISA) for AWS and holds the CCSK and ISO 27001 Lead Implementer certifications.
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/04/20/ziv-wand-author.jpg" alt="Ziv Wand" style="margin-left: 12px;margin-right:18px;margin-top: 12px;margin-bottom: 6px;width:93.750px;height: 125px"&gt;
    &lt;span class="lb-h4" style="line-height: 2.1em;padding-top: 12px;margin-top: 24px"&gt;Ziv Wand&lt;/span&gt;
    &lt;br&gt;Ziv is a Compliance Program Manager at AWS and leads multiple security and privacy initiatives. Ziv has over 6 years of experience in information security assurance, external IT security audits, security control design and implementation, and audit readiness. He holds a Bachelor of Science in Management Information Systems from Binghamton University.
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/04/20/shalini-mishra-author.jpg" alt="Shalini Mishra" style="margin-left: 12px;margin-right:18px;margin-top: 12px;margin-bottom: 6px;width:93.750px;height: 125px"&gt;
    &lt;span class="lb-h4" style="line-height: 2.1em;padding-top: 12px;margin-top: 24px"&gt;Shalini Mishra&lt;/span&gt;
    &lt;br&gt;Shalini is a Compliance Program Manager at AWS. She has over 5 years of experience leading end-to-end compliance programs across ISO, SOC, and cloud security frameworks, with deep expertise in third-party risk management and enterprise governance. Shalini holds a Master of Science degree in Information Systems and a CRISC certification.
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/Patrick-broussard-author.jpg" alt="Patrick Broussard" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Patrick Broussard&lt;/span&gt;&lt;br&gt;Patrick is a Security Assurance Analyst at AWS, where he assists with multiple security and privacy initiatives, with expertise in physical security and infrastructure management. He has over 3 years of experience in information security assurance and infrastructure security control operation, and holds a Bachelors of Science from Virginia Polytechnic Institute and State University.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/jimmy-chang-author.jpg" alt="Jimmy Chang" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Jimmy Chang&lt;/span&gt;&lt;br&gt;Jimmy is a Security Assurance Analyst at AWS, where he assists with multiple security and privacy initiatives, with expertise in application security and secure software development life cycle. He has over 4 years of experience in information security and holds CISSP and CCSK certifications, and holds a Master of Information Systems Management from Carnegie Mellon University.&lt;/p&gt; 
   &lt;/div&gt; 
   &lt;div class="blog-author-box"&gt; 
    &lt;img loading="lazy" class="alignleft size-full wp-image-33350" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/07/Faraz-Haq-author.jpg" alt="Faraz Haq" style="margin-left: 15.625px;margin-right:30.625px;margin-top: 24px;margin-bottom: 10px;width:93.750px;height: 125px"&gt;
    &lt;p&gt;&lt;/p&gt; 
    &lt;p&gt;&lt;span class="lb-h4"&gt;Faraz Haq&lt;/span&gt;&lt;br&gt; Faraz is a Compliance Program Manager at AWS leading various compliance and security assurance initiatives. Faraz has over 10 years of experience in information security and compliance. He holds Bachelor of Science Degrees in Accounting and Finance from Oakland University.&lt;/p&gt; 
   &lt;/div&gt; 
  &lt;/footer&gt; 
 &lt;/div&gt; 
&lt;/div&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>AWS successfully completed its 2025-26 NHS DSPT assessment</title>
		<link>https://aws.amazon.com/blogs/security/aws-successfully-completed-its-2025-26-nhs-dspt-assessment/</link>
					
		
		<dc:creator><![CDATA[Tariro Dongo]]></dc:creator>
		<pubDate>Tue, 11 Aug 2026 16:12:04 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">f3f9f32ba6ddeb5247d01895ac00fedacee50d8f</guid>

					<description>Amazon Web Services (AWS) is pleased to announce its successful completion of the 2025-26 NHS Data Security and Protection Toolkit (NHS DSPT) assessment audit and achieving a status of Standards Exceeded. The NHS DSPT is an assessment that allows organizations to measure their performance against the National Data Guardian’s 10 data security standards. All organizations […]</description>
										<content:encoded>&lt;p&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt; is pleased to announce its successful completion of the 2025-26 &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://www.dsptoolkit.nhs.uk/" target="_blank" rel="noopener" data-cms-ai="0"&gt;NHS Data Security and Protection Toolkit&lt;/a&gt;&lt;/span&gt; (NHS DSPT) assessment audit and achieving a status of &lt;i&gt;Standards Exceeded&lt;/i&gt;.&lt;/p&gt; 
&lt;p&gt;The NHS DSPT is an assessment that allows organizations to measure their performance against the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://www.dsptoolkit.nhs.uk/News/131" target="_blank" rel="noopener" data-cms-ai="0"&gt;National Data Guardian’s 10 data security standards&lt;/a&gt;&lt;/span&gt;. All organizations that access NHS patient data and systems are expected to use the toolkit to demonstrate their compliance with safe data security standards. NHS DSPT covers standards regarding Personal Confidential Data, Continuity Planning, IT Protection, and more. AWS undergoes the assessment to provide customers with assurance that we are practicing good data security.&lt;/p&gt; 
&lt;p&gt;The AWS NHS DSPT assessment status is valid until June 30, 2027, and a certificate that confirms our compliance is available on the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://www.dsptoolkit.nhs.uk/OrganisationSearch/8JX11" target="_blank" rel="noopener" data-cms-ai="0"&gt;NHS England&lt;/a&gt;&lt;/span&gt; website and in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/artifact" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Artifact&lt;/a&gt;&lt;/span&gt;. AWS Artifact is a self-service portal for on-demand access to AWS compliance reports. Sign in to &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://console.aws.amazon.com/artifact" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Artifact in the AWS Management Console&lt;/a&gt;&lt;/span&gt;, or learn more at &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/artifact/getting-started/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Getting Started with AWS Artifact&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;Security and compliance is a shared responsibility between AWS and the customer. When customers move their computer systems and data to the cloud, security responsibilities are shared between the customer and the cloud service provider. For more information, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/whitepapers/latest/navigating-gdpr-compliance/shared-security-responsibility-model.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Shared Security Responsibility Model&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;To learn more about our compliance and security programs, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/programs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Compliance Programs&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;As an AWS customer, you can reach out to your AWS account team if you have any questions or feedback.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below. &lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2025/11/10/dongot.jpg" alt="Tari Dongo" width="120" height="160" class="aligncenter size-full wp-image-29443"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Tariro Dongo&lt;/h3&gt; 
  &lt;p&gt;Tari is a Security Assurance Program Manager at AWS, based in London. She is responsible for third-party and customer audits, attestations, certifications, and assessments across EMEA. Tari has worked in security assurance and technology risk in the big four and financial services industry for over 15 years.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>AWS completes the 2026 Police-Assured Secure Facilities (PASF) audit in Europe (London)</title>
		<link>https://aws.amazon.com/blogs/security/aws-completes-the-2026-police-assured-secure-facilities-pasf-audit-in-europe-london/</link>
					
		
		<dc:creator><![CDATA[Tariro Dongo]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 20:21:40 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">5e31156ad7b2c7cb4178aff2abe3bb492da23b6e</guid>

					<description>We’re excited to announce that our Europe (London) AWS Region has renewed its accreditation for United Kingdom (UK) Police-Assured Secure Facilities (PASF) for Official-Sensitive data. Since 2017, the Amazon Web Services (AWS) Europe (London) Region has been accredited under the PASF program. This demonstrates our continuous commitment to adhere to the heightened expectations of customers […]</description>
										<content:encoded>&lt;p&gt;We’re excited to announce that our Europe (London) AWS Region has renewed its accreditation for United Kingdom (UK) Police-Assured Secure Facilities (PASF) for Official-Sensitive data. Since 2017, the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt; Europe (London) Region has been accredited under the PASF program. This demonstrates our continuous commitment to adhere to the heightened expectations of customers with UK law enforcement workloads. Our UK law enforcement customers who require PASF can continue to run their applications in the PASF-accredited Europe (London) Region in confidence.&lt;/p&gt; 
&lt;p&gt;The PASF is a long-established assurance process, used by UK law enforcement, as a method for assuring the security of facilities such as data centers or other locations that house critical business applications that process or hold police data. PASF consists of a control set of security requirements, an on-site inspection, and an audit interview with representatives of the facility.&lt;/p&gt; 
&lt;p&gt;The Police Digital Service (PDS) confirmed the accreditation renewal for AWS on May 28, 2026. A confirmation letter can be found on &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/artifact/getting-started/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Artifact&lt;/a&gt;&lt;/span&gt;. The UK police force and law enforcement organizations can also obtain confirmation of the compliance status of AWS through the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://pds.police.uk/contact-us/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Police Digital Service&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;To learn more about our compliance and security programs, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/programs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Compliance Programs&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;As an AWS customer, you can reach out to your AWS account team if you have any questions or feedback.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2025/11/10/dongot.jpg" alt="Tari Dongo" width="120" height="160" class="aligncenter size-full wp-image-29443"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Tariro Dongo&lt;/h3&gt; 
  &lt;p&gt;Tari is a Security Assurance Program Manager at AWS, based in London. She is responsible for third-party and customer audits, attestations, certifications, and assessments across EMEA. Tari has worked in security assurance and technology risk in the big four and financial services industry for over 15 years.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>2026 AWS CyberVadis report now available for due diligence on third-party suppliers</title>
		<link>https://aws.amazon.com/blogs/security/2026-aws-cybervadis-report-now-available-for-due-diligence-on-third-party-suppliers/</link>
					
		
		<dc:creator><![CDATA[Tariro Dongo]]></dc:creator>
		<pubDate>Mon, 10 Aug 2026 17:09:02 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[CyberVadis]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">fa1e2065af2276482f9598795e2ab57af352d6d4</guid>

					<description>We’re excited to announce that Amazon Web Services (AWS) has completed theCyberVadis assessment of its security posture with the highest score (Mature) in all assessed areas. This demonstrates our continued commitment to meet the heightened expectations for cloud service providers. Customers can now use the 2026 AWS CyberVadis report and scorecard to reduce their supplier […]</description>
										<content:encoded>&lt;p&gt;We’re excited to announce that &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt; has completed the&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/cybervadis/" target="_blank" rel="noopener" data-cms-ai="0"&gt;CyberVadis&lt;/a&gt;&lt;/span&gt; assessment of its security posture with the highest score (&lt;i&gt;Mature&lt;/i&gt;) in all assessed areas. This demonstrates our continued commitment to meet the heightened expectations for cloud service providers. Customers can now use the 2026 AWS CyberVadis report and scorecard to reduce their supplier due-diligence burden.&lt;/p&gt; 
&lt;p&gt;With the increasing adoption of cloud products and services across multiple sectors and industries, AWS is a critical component of customers’ third-party environments. Regulated customers, such as those in the financial services sector, are held to high standards by regulators and auditors when it comes to exercising effective due diligence on third parties.&lt;/p&gt; 
&lt;p&gt;Many customers use third-party risk management services such as CyberVadis to better manage risks from their evolving third-party environments and drive operational efficiencies. In support of these efforts, AWS has completed its annual CyberVadis security posture assessment, conducted by CyberVadis security analysts.&lt;/p&gt; 
&lt;p&gt;CyberVadis is a comprehensive third-party risk assessment process that combines the speed and scalability of automation with the certainty of analyst validation. CyberVadis assessments employ a dynamic and comprehensive approach to third-party risk assessment, replacing outdated static spreadsheets and the need for annual AWS assessment access requests. This cloud-based solution provides advanced capabilities by integrating AWS responses with analytics and sophisticated risk models to deliver an in-depth view of the security posture of AWS.&lt;/p&gt; 
&lt;p&gt;CyberVadis’s risk assessment methodology evaluates 20 topics covering the entire cybersecurity life cycle across four phases: Identify, Protect, Detect, and React. These topics include Data Privacy, Access Management, and Infrastructure Security. The assessment criteria are based on international information security standards, including ISO 2700x, NIST Cybersecurity Framework, Cybersecurity for ICS, PCI DSS, NIS2 and GDPR.&lt;/p&gt; 
&lt;p&gt;Customers can use CyberVadis results to map the assessment of AWS to commonly used industry frameworks and standards to instantly gain visibility into controls coverage.&lt;/p&gt; 
&lt;p&gt;AWS customers can download the complete 2026 AWS Assessment Report directly through &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://cybervadis.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;CyberVadis’s portal&lt;/a&gt;&lt;/span&gt; using their own account, or through &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/artifact/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Artifact&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;To learn more about our other compliance and security programs, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/programs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Compliance Programs&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;As an AWS customer, you can reach out to your AWS account team if you have any questions or feedback.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2025/11/10/dongot.jpg" alt="Tari Dongo" width="120" height="160" class="aligncenter size-full wp-image-29443"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Tariro Dongo&lt;/h3&gt; 
  &lt;p&gt;Tari is a Security Assurance Program Manager at AWS, based in London. She is responsible for third-party and customer audits, attestations, certifications, and assessments across EMEA. Tari has worked in security assurance and technology risk in the big four and financial services industry for over 15 years.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>A decade of enterprise identity in the cloud with AWS Managed Microsoft AD</title>
		<link>https://aws.amazon.com/blogs/security/a-decade-of-enterprise-identity-in-the-cloud-with-aws-managed-microsoft-ad/</link>
					
		
		<dc:creator><![CDATA[Vladimir Provorov]]></dc:creator>
		<pubDate>Fri, 07 Aug 2026 19:37:57 +0000</pubDate>
				<category><![CDATA[AWS Directory Service]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[AWS Managed Microsoft AD]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">417a77c3df74e9c20b765cc8ee60adafcd5257ca</guid>

					<description>Ten years ago, we launched AWS Directory Service for Microsoft Active Directory, a fully managed Microsoft Active Directory in the AWS Cloud. In that original announcement, Jeff Barr described a straightforward promise: “You will spend less time administering and more time working on your applications and your business.” A decade later, AWS Managed Microsoft AD […]</description>
										<content:encoded>&lt;p&gt;Ten years ago, we &lt;a href="https://aws.amazon.com/blogs/aws/aws-directory-service-update-support-for-managed-microsoft-active-directory/" target="_blank" rel="noopener noreferrer"&gt;launched AWS Directory Service for Microsoft Active Directory&lt;/a&gt;, a fully managed Microsoft Active Directory in the AWS Cloud. In that original announcement, Jeff Barr described a straightforward promise: “You will spend less time administering and more time working on your applications and your business.”&lt;/p&gt; 
&lt;p&gt;A decade later, AWS Managed Microsoft AD has become the identity backbone for thousands of enterprises worldwide. What started as a way to run directory-aware workloads in the cloud now powers SQL Server authentication, &lt;a href="https://aws.amazon.com/workspaces" target="_blank" rel="noopener noreferrer"&gt;Amazon WorkSpaces&lt;/a&gt; virtual desktops, and &lt;a href="https://aws.amazon.com/fsx" target="_blank" rel="noopener noreferrer"&gt;Amazon FSx&lt;/a&gt; for Windows File Server for thousands of enterprises worldwide.&lt;/p&gt; 
&lt;h2&gt;The beginning: Solving a real customer problem&lt;/h2&gt; 
&lt;p&gt;In 2015, customers migrating Windows workloads to &lt;a href="https://aws.amazon.com" target="_blank" rel="noopener noreferrer"&gt;Amazon Web Services (AWS)&lt;/a&gt; faced a familiar challenge. Microsoft Active Directory (AD) had become the dominant standard for enterprise identity, by &lt;a href="https://www.frost.com/growth-opportunity-news/active-directory-holds-the-keys-to-your-kingdom-but-is-it-secure/" target="_blank" rel="noopener noreferrer"&gt;some estimates&lt;/a&gt; commanding 90% market share for directory services in the Fortune 1000. Running SharePoint, SQL Server, .NET applications, or virtually any Windows workload meant running AD.&lt;/p&gt; 
&lt;p&gt;However, running AD well comes with significant operational overhead. It requires careful capacity planning, high availability design across multiple sites, ongoing patching and maintenance, backup and disaster recovery procedures, and deep expertise that’s increasingly difficult to find and retain. Customers told us they wanted to focus on their applications, not on managing domain controllers.&lt;/p&gt; 
&lt;p&gt;So we built AWS Managed Microsoft AD. Powered by actual Windows Server, it delivered real Microsoft AD (not a compatible alternative, but the genuine article) as a fully managed service. We handled the domain controller deployment, the multi-AZ high availability, the automated backups, the patching, the monitoring, and many more features including scalability and multi-Region replication. Customers got a directory they could provision in 25–30 minutes and start using immediately.&lt;/p&gt; 
&lt;p&gt;From that original &lt;a href="https://aws.amazon.com/blogs/security/announcing-managed-microsoft-active-directory-in-the-aws-cloud/" target="_blank" rel="noopener noreferrer"&gt;What’s New announcement&lt;/a&gt; by&amp;nbsp;Bryan Nairn:&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;“AWS Directory Service now lets you run a Microsoft Active Directory (AD) as a managed service… Host monitoring and recovery, data replication, snapshots, and software updates are automatically configured and managed for you.”&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;h2&gt;The first decade of innovation&lt;/h2&gt; 
&lt;p&gt;Looking back at the past 10 years, we’re struck by how much AWS Managed Microsoft AD has evolved in response to customer feedback. Here are some of the highlights:&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2015&lt;/strong&gt;: Launch of AWS Managed Microsoft AD (Enterprise Edition) in five AWS Regions, powered by Windows Server 2012 R2. Support for trust relationships with on-premises AD, seamless domain join for &lt;a href="https://aws.amazon.com/ec2" target="_blank" rel="noopener noreferrer"&gt;Amazon Elastic Compute Cloud (Amazon EC2)&lt;/a&gt; instances, and integration with Amazon WorkSpaces.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2017&lt;/strong&gt;: Introduction of &lt;a href="https://aws.amazon.com/blogs/security/introducing-aws-directory-service-for-microsoft-active-directory-standard-edition/" target="_blank" rel="noopener noreferrer"&gt;Standard Edition&lt;/a&gt;, optimized for small and midsize businesses. This gave customers a cost-effective option for resource forest deployments and smaller workloads.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2018&lt;/strong&gt;: Added support for &lt;a href="https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_schema_extensions.html" target="_blank" rel="noopener noreferrer"&gt;schema extensions&lt;/a&gt;, enabling customers to extend their directory schema for applications that require custom attributes. Support for Group Managed Service Accounts (gMSA) with Windows containers and other services.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2019&lt;/strong&gt;: Launched &lt;a href="https://aws.amazon.com/blogs/aws/multi-region-replication-now-enabled-for-aws-managed-microsoft-active-directory/" target="_blank" rel="noopener noreferrer"&gt;multi-Region replication&lt;/a&gt; for Enterprise Edition, allowing customers to automatically replicate their directory across AWS Regions for improved performance and disaster recovery. Added &lt;a href="https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_directory_sharing.html" target="_blank" rel="noopener noreferrer"&gt;directory sharing&lt;/a&gt; across AWS accounts and integration with &lt;a href="https://aws.amazon.com/organizations" target="_blank" rel="noopener noreferrer"&gt;AWS Organizations&lt;/a&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2020&lt;/strong&gt;: Introduced &lt;a href="https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_directory_settings.html" target="_blank" rel="noopener noreferrer"&gt;fine-grained directory settings&lt;/a&gt; for security and compliance, enabling customers to configure secure channel settings for protocols and ciphers. Enhanced compliance support—with the service now HIPAA eligible—included as an in-scope service under PCI DSS, and achieving FedRAMP authorization.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2021&lt;/strong&gt;: Added &lt;a href="https://aws.amazon.com/about-aws/whats-new/2021/12/aws-managed-microsoft-ad-amazon-cloudwatch/" target="_blank" rel="noopener noreferrer"&gt;CloudWatch metrics for domain controllers&lt;/a&gt;, helping customers optimize scaling decisions based on CPU, memory, disk, and AD-specific metrics like DNS and directory read/write operations. Launched integration with &lt;a href="https://aws.amazon.com/about-aws/whats-new/2021/06/aws-directory-service-now-supports-active-directory-authentication-with-aws-transfer-family/" target="_blank" rel="noopener noreferrer"&gt;AWS Transfer Family&lt;/a&gt; for SFTP/FTPS/FTP authentication.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2022&lt;/strong&gt;: &lt;a href="https://aws.amazon.com/about-aws/whats-new/2022/10/aws-managed-microsoft-ad-available-windows-server-2019/" target="_blank" rel="noopener noreferrer"&gt;Windows Server 2019 upgrade&lt;/a&gt; became available, with customer-initiated updates and automatic migration for all directories beginning in 2023.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2023&lt;/strong&gt;: &lt;a href="https://aws.amazon.com/about-aws/whats-new/2023/08/aws-private-ca-connector-active-directory/" target="_blank" rel="noopener noreferrer"&gt;AWS Private CA Connector for Active Directory&lt;/a&gt; launched, allowing customers to replace self-managed enterprise certificate authorities with &lt;a href="https://aws.amazon.com/private-ca" target="_blank" rel="noopener noreferrer"&gt;AWS Private CA&lt;/a&gt; for automatic certificate enrollment to domain-joined objects, with no local agents or proxy servers required.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2024&lt;/strong&gt;: Launched &lt;a href="https://aws.amazon.com/about-aws/whats-new/2024/09/aws-managed-microsoft-ad-users-groups-using-apis/" target="_blank" rel="noopener noreferrer"&gt;CRUD APIs for users and groups&lt;/a&gt;, enabling IT administrators to manage AD users and groups directly from the AWS Management Console, &lt;a href="https://aws.amazon.com/cli" target="_blank" rel="noopener noreferrer"&gt;AWS Command Line Interface (AWS CLI)&lt;/a&gt;, and APIs, without deploying bastion hosts or opening network ports.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2025&lt;/strong&gt;: General availability of &lt;a href="https://aws.amazon.com/blogs/modernizing-with-aws/extend-your-active-directory-domain-to-aws-with-aws-managed-microsoft-ad-hybrid-edition/" target="_blank" rel="noopener noreferrer"&gt;AWS Managed Microsoft AD (Hybrid Edition)&lt;/a&gt;, allowing customers to extend their existing AD domain to AWS while retaining administrative control. Introduced &lt;a href="https://aws.amazon.com/about-aws/whats-new/2025/10/aws-directory-service-api-edition-upgrades/" target="_blank" rel="noopener noreferrer"&gt;self-service edition upgrades&lt;/a&gt; through the UpdateDirectorySetup API, eliminating the need for support tickets when scaling from Standard to Enterprise Edition.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;2026 and beyond&lt;/strong&gt;: As we enter our second decade, our roadmap continues to be shaped by the customers who depend on AWS Managed Microsoft AD every day. We’re working on new capabilities driven directly by your feedback, and we look forward to sharing more soon.&lt;/p&gt; 
&lt;h2&gt;Powering identity across AWS&lt;/h2&gt; 
&lt;p&gt;Over the past decade, more than 20 AWS services have added native integration with AWS Managed Microsoft AD. What started with WorkSpaces and EC2 domain join has expanded to more than 20 AWS services, making AWS Managed Microsoft AD foundational for many enterprise customers’ workloads on AWS.&lt;/p&gt; 
&lt;h3&gt;Database services&lt;/h3&gt; 
&lt;p&gt;For many customers, database authentication is a primary driver for adopting AWS Managed Microsoft AD. By pairing &lt;a href="https://aws.amazon.com/rds" target="_blank" rel="noopener noreferrer"&gt;Amazon Relational Database Service (Amazon RDS)&lt;/a&gt; for SQL Server with AWS Managed Microsoft AD, they gain the benefits of fully managed services while achieving straightforward integration and reduced management overhead. This combination lets developers and DBAs use their existing AD credentials to access SQL Server databases, so they don’t need to manage separate database accounts.&lt;/p&gt; 
&lt;p&gt;Beyond SQL Server, AWS Managed Microsoft AD enables Windows authentication across the Amazon RDS family:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;Amazon RDS for Oracle&lt;/li&gt; 
 &lt;li&gt;Amazon RDS for PostgreSQL&lt;/li&gt; 
 &lt;li&gt;Amazon RDS for MySQL&lt;/li&gt; 
 &lt;li&gt;Amazon RDS for DB2&lt;/li&gt; 
 &lt;li&gt;Amazon Aurora MySQL&lt;/li&gt; 
 &lt;li&gt;Amazon Aurora PostgreSQL&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;File storage services&lt;/h3&gt; 
&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html" target="_blank" rel="noopener noreferrer"&gt;Amazon FSx for Windows File Server&lt;/a&gt; provides fully managed Windows file shares that integrate natively with AWS Managed Microsoft AD. Customers use AD users and groups to control access to file shares, apply Windows ACLs, and use features like DFS namespaces, all with the same management experience they use on premises.&lt;/p&gt; 
&lt;p&gt;&lt;a href="https://aws.amazon.com/storagegateway/" target="_blank" rel="noopener noreferrer"&gt;AWS Storage Gateway&lt;/a&gt; supports AD authentication for SMB file shares, enabling hybrid storage architectures where on-premises applications access cloud storage using familiar AD credentials.&lt;/p&gt; 
&lt;p&gt;&lt;a href="https://aws.amazon.com/aws-transfer-family/" target="_blank" rel="noopener noreferrer"&gt;AWS Transfer Family&lt;/a&gt; added AD integration in 2021, allowing customers to authenticate SFTP, FTPS, and FTP users against their AWS Managed Microsoft AD. This allows customers to migrate file transfer workflows without changing end-user credentials.&lt;/p&gt; 
&lt;h3&gt;End user computing&lt;/h3&gt; 
&lt;p&gt;Amazon end-user computing services were among the first to integrate with AWS Managed Microsoft AD:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href="https://aws.amazon.com/workspaces" target="_blank" rel="noopener noreferrer"&gt;Amazon WorkSpaces&lt;/a&gt;: Virtual desktops provisioned and authenticated through AD&lt;/li&gt; 
 &lt;li&gt;&lt;a href="https://aws.amazon.com/workspaces/applications/" target="_blank" rel="noopener noreferrer"&gt;Amazon Workspaces applications&lt;/a&gt; (formerly AppStream 2.0): Application streaming with domain-joined fleet instances&lt;/li&gt; 
 &lt;li&gt;&lt;a href="https://aws.amazon.com/workmail/" target="_blank" rel="noopener noreferrer"&gt;Amazon WorkMail&lt;/a&gt;: Business email tied to AD identities&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h3&gt;Security and identity&lt;/h3&gt; 
&lt;p&gt;&lt;a href="https://aws.amazon.com/iam/identity-center" target="_blank" rel="noopener noreferrer"&gt;AWS IAM Identity Center&lt;/a&gt; (formerly AWS Single Sign-On) uses AWS Managed Microsoft AD as an identity source, synchronizing users and groups to provide single sign-on access across AWS accounts and applications. This provides centralized identity management while using your existing AD infrastructure.&lt;/p&gt; 
&lt;p&gt;&lt;a href="https://aws.amazon.com/vpn/client-vpn-download/" target="_blank" rel="noopener noreferrer"&gt;AWS Client VPN&lt;/a&gt; authenticates users against AWS Managed Microsoft AD, providing secure remote access using corporate credentials.&lt;/p&gt; 
&lt;p&gt;AWS Management Console access can be federated through AWS Managed Microsoft AD, &lt;a href="https://aws.amazon.com/iam" target="_blank" rel="noopener noreferrer"&gt;so AD users can assume AWS Identity and Access Management (IAM)&lt;/a&gt; roles and manage AWS resources with their existing credentials.&lt;/p&gt; 
&lt;h3&gt;Compute services&lt;/h3&gt; 
&lt;p&gt;&lt;a href="https://aws.amazon.com/ec2" target="_blank" rel="noopener noreferrer"&gt;Amazon EC2&lt;/a&gt; instances (both Windows and Linux) support seamless domain join at launch. Windows instances can be managed using Group Policy, and Linux instances can authenticate users through SSSD or Realm integration.&lt;/p&gt; 
&lt;p&gt;&lt;a href="https://aws.amazon.com/ecs" target="_blank" rel="noopener noreferrer"&gt;Amazon Elastic Container Service (Amazon ECS)&lt;/a&gt; supports AD authentication for Windows containers through Group Managed Service Accounts (gMSA), enabling containerized applications to authenticate to AD-integrated resources.&lt;/p&gt; 
&lt;h3&gt;Business applications&lt;/h3&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href="https://aws.amazon.com/quick/quicksight/" target="_blank" rel="noopener noreferrer"&gt;Amazon QuickSight&lt;/a&gt; provides business intelligence with AD-based user provisioning.&lt;/li&gt; 
 &lt;li&gt;&lt;a href="https://aws.amazon.com/connect" target="_blank" rel="noopener noreferrer"&gt;Amazon Connect&lt;/a&gt; provides contact center agent authentication&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This breadth of integration means customers can standardize on a single directory for their entire AWS environment, from databases to desktops to file servers to analytics.&lt;/p&gt; 
&lt;h2&gt;Choosing the right edition&lt;/h2&gt; 
&lt;p&gt;Over the years, we’ve learned that customers have different needs when it comes to managed AD. Today, AWS Managed Microsoft AD is available in three editions, each designed for specific use cases.&lt;/p&gt; 
&lt;h3&gt;Standard Edition: Basic, cost-effective identity&lt;/h3&gt; 
&lt;p&gt;Standard Edition is optimized for small and midsize businesses, or for enterprises deploying a resource forest model in a single AWS Region. With 1 GB of directory object storage supporting up to 30,000 objects (approximately 5,000 users), Standard Edition provides everything needed to run directory-aware workloads without the overhead of managing domain controllers.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Common use cases:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Resource forest deployments&lt;/strong&gt; – Many customers use Standard Edition as a resource forest, establishing a trust relationship with their on-premises AD. User identities remain in the customer’s existing domain, while the resource forest manages AWS resources like Amazon RDS for SQL Server and FSx for Windows File Server.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Development and test environments&lt;/strong&gt; – Cost-effective option for non-production workloads&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Single-Region applications&lt;/strong&gt; – Workloads that don’t require global presence&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Standard Edition is a great starting point, and customers aren’t locked in. With our new self-service upgrade capability (launched October 2025), you can &lt;a href="https://aws.amazon.com/about-aws/whats-new/2025/10/aws-directory-service-api-edition-upgrades/" target="_blank" rel="noopener noreferrer"&gt;upgrade to Enterprise Edition&lt;/a&gt; programmatically through the UpdateDirectorySetup API, no support tickets or maintenance window coordination required.&lt;/p&gt; 
&lt;h3&gt;Enterprise Edition: Built for global scale&lt;/h3&gt; 
&lt;p&gt;Enterprise Edition is designed for organizations with larger user populations, complex deployments, or global footprints. With 17 GB of storage supporting up to 500,000 directory objects, Enterprise Edition provides the capacity and capabilities that large enterprises require.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;Key capabilities:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Multi-Region replication&lt;/strong&gt; – Automatically replicate your directory across AWS Regions. Users and applications connect to local domain controllers, reducing latency and providing disaster recovery capabilities.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Extended directory sharing&lt;/strong&gt; – Share your directory with up to 500 AWS accounts, enabling centralized identity across large organizations using AWS Organizations.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Higher compute capacity&lt;/strong&gt; – Larger domain controller instances with more CPU and memory for demanding workloads&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you have users and applications in multiple geographic regions, or anticipate significant growth in directory objects, Enterprise Edition is the right choice.&lt;/p&gt; 
&lt;h3&gt;Hybrid Edition: Extend your existing domain&lt;/h3&gt; 
&lt;p&gt;Launched earlier this year, Hybrid Edition takes a fundamentally different approach. Instead of creating a new AD domain in AWS, Hybrid Edition extends your existing AD domain into the cloud.&lt;/p&gt; 
&lt;p&gt;&lt;strong&gt;What makes Hybrid Edition unique:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;Same domain&lt;/strong&gt; – AWS Managed Microsoft AD domain controllers join your existing AD. No new domain name, no trust relationships to configure.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Retain administrative control&lt;/strong&gt; – Unlike Standard and Enterprise where you receive delegated OU permissions, Hybrid Edition preserves your existing administrative rights. Your AD administrators continue using familiar tools while changes replicate to AWS in real time.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Preserve existing investments&lt;/strong&gt; – Security principals, group policies, and permissions transfer seamlessly. No migration of identities required.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Hybrid Edition is ideal for customers who want the operational benefits of AWS-managed domain controller infrastructure without changing their AD architecture or giving up administrative control.&lt;/p&gt; 
&lt;h3&gt;Which edition should you choose?&lt;/h3&gt; 
&lt;p&gt;Use the following table to determine which edition best fits your use case.&lt;/p&gt; 
&lt;table class="styled-table" border="1px" cellpadding="10px"&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;&lt;strong&gt;Use case&lt;/strong&gt;&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;&lt;strong&gt;Edition&lt;/strong&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;A new AD domain for AWS workloads in a single Region&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Standard Edition&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;A resource forest with trust to on-premises AD&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Standard Edition&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Multi-Region replication for global deployments&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Enterprise Edition&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Support for more than 30,000 directory objects&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Enterprise Edition&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;To extend your existing AD domain to AWS&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Hybrid Edition&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;To retain full administrative control over your AD&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Hybrid Edition&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;h2&gt;What we’ve learned: Design decisions that stood the test of time&lt;/h2&gt; 
&lt;p&gt;Looking back at the decisions we made in 2015, several have proven foundational to the service’s success:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;strong&gt;High availability by default&lt;/strong&gt; – Every AWS Managed Microsoft AD directory deploys with a minimum of two domain controllers across separate Availability Zones. Customers don’t need to design high availability (HA) architecture, it’s built in.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Real Microsoft AD&lt;/strong&gt; – We chose to run actual Windows Server AD, not a compatible alternative. This means standard AD administration tools work, existing scripts and automation work, and applications that depend on specific AD behaviors typically work without modification.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Seamless integration with AWS services&lt;/strong&gt; – By building native integrations between AWS Managed Microsoft AD and other AWS services, we’ve made it possible for customers to use a single directory across their entire AWS environment.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Customer retains control&lt;/strong&gt; – While AWS manages the infrastructure, customers manage their directory content. You control your users, groups, OUs, and policies using familiar tools.&lt;/li&gt; 
 &lt;li&gt;&lt;strong&gt;Room to grow&lt;/strong&gt; – The edition model (and now self-service upgrades) means customers can start with what they need today and scale as requirements evolve.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;h2&gt;Looking ahead: The next chapter&lt;/h2&gt; 
&lt;p&gt;As we celebrate 10 years of AWS Managed Microsoft AD, we’re excited about what’s ahead. The launch of Hybrid Edition earlier this year represents a significant expansion of what’s possible, giving customers new flexibility in how they architect their identity infrastructure for hybrid and multi-cloud environments.&lt;/p&gt; 
&lt;p&gt;We continue to listen to customer feedback and invest in capabilities that reduce operational burden while expanding what you can build. Whether you’re running your first SQL Server database in the cloud, deploying virtual desktops to a global workforce, or modernizing legacy applications that depend on AD, AWS Managed Microsoft AD is here to help.&lt;/p&gt; 
&lt;p&gt;Thank you to all the customers who have trusted us with their identity infrastructure over the past decade. Your feedback has shaped this service, and we’re committed to continuing to earn that trust for the next 10 years and beyond.&lt;/p&gt; 
&lt;h2&gt;Resources&lt;/h2&gt; 
&lt;p&gt;Ready to get started or learn more? Here are some resources:&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;a href="https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html" target="_blank" rel="noopener noreferrer"&gt;AWS Directory Service Documentation&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href="https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html" target="_blank" rel="noopener noreferrer"&gt;Getting Started with AWS Managed Microsoft AD&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href="https://aws.amazon.com/directoryservice/pricing/" target="_blank" rel="noopener noreferrer"&gt;AWS Directory Service Pricing&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href="https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_best_practices.html" target="_blank" rel="noopener noreferrer"&gt;Best Practices for AWS Managed Microsoft AD&lt;/a&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;a href="https://aws.amazon.com/blogs/security/tag/aws-directory-service/" target="_blank" rel="noopener noreferrer"&gt;AWS Directory Service on the AWS Security Blog&lt;/a&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/05/Vladimir-Provorov-Author.jpg" alt="" width="120" height="160" class="aligncenter size-full wp-image-23212"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Vladimir Provorov&lt;/h3&gt; 
  &lt;p&gt;Vladimir is a Product Solutions Architect from AWS Identity focused on Workforce Identity and Directory Service. He works on developing new features to make Enterprise Identity simpler and more scalable. He is excited to travel and explore the world with his family.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2025/05/29/Rodney-Underkoffler.jpg" alt="Rodney Underkoffler" width="120" height="160" class="aligncenter size-full wp-image-38542"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Rodney Underkoffler&lt;/h3&gt; 
  &lt;p&gt;Rodney is a Senior Solutions Architect at Amazon Web Services, focused on guiding enterprise customers on their cloud journey. He has a background in infrastructure, security, and IT business practices. He is passionate about technology and enjoys building and exploring new solutions and methodologies.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2019/06/19/tekena-author-v3.jpg" alt="Author" width="120" height="160" class="aligncenter size-full wp-image-10920"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Tekena Orugbani&lt;/h3&gt; 
  &lt;p&gt;Tekena is a Sr. Specialist Solutions Architect at Amazon Web Services and a technologist of over 20 years, specializing in Microsoft technologies. At AWS, Tekena is focused on helping customers architect, migrate and modernize their Microsoft workloads on the AWS Cloud. Outside work, he enjoys hanging out with his family and watching soccer.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Securing your Amazon S3 buckets: Identifying and remediating over-permissioned access</title>
		<link>https://aws.amazon.com/blogs/security/securing-your-amazon-s3-buckets-identifying-and-remediating-over-permissioned-access/</link>
					
		
		<dc:creator><![CDATA[Hetal Kolekar]]></dc:creator>
		<pubDate>Fri, 07 Aug 2026 16:46:40 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[Amazon Simple Storage Service (S3)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[Amazon S3]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">d2a2a47bd24a9d71d4f9ddd6987866c13aa2ba0f</guid>

					<description>Misconfigured Amazon Simple Storage Service (Amazon S3) buckets can expose your data to unauthorized access. Without proactive review, S3 bucket policies or Access Control Lists (ACLs) configured with broad access may go unnoticed in your environment. In this post, you learn how to identify and fix over-permissioned S3 buckets across your AWS environment, along with […]</description>
										<content:encoded>&lt;p&gt;Misconfigured &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/s3" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Simple Storage Service (Amazon S3)&lt;/a&gt;&lt;/span&gt; buckets can expose your data to unauthorized access. Without proactive review, S3 bucket policies or Access Control Lists (ACLs) configured with broad access may go unnoticed in your environment. In this post, you learn how to identify and fix over-permissioned S3 buckets across your AWS environment, along with best practice recommendations and automation opportunities to help you prevent security gaps. This post provides a workflow framework and methodology recommendations for your security team to adapt. The focus of this post is on the what and why rather than a prescriptive implementation. You will need to customize the approach based on your organization’s requirements and existing security tooling.&lt;/p&gt; 
&lt;p&gt;This solution is intended for security engineers, cloud architects, and DevOps teams managing single- or multiple-account AWS environments with Amazon S3 workloads that require access management.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;&lt;b&gt;Prerequisites&lt;/b&gt;&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Before you begin, make sure you have the following in place:&lt;/p&gt; 
&lt;ul id="rte-22811075-8234-11f1-bd3b-f187a5021872" class="rte2-style-ul"&gt; 
 &lt;li&gt;Ensure you have an AWS account with permissions to create &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/lambda" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Lambda&lt;/a&gt;&lt;/span&gt; functions, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/span&gt; roles, and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/sns" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Simple Notification Service (Amazon SNS)&lt;/a&gt;&lt;/span&gt; topics.&lt;/li&gt; 
 &lt;li&gt;You will also need the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cli" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Command Line Interface (AWS CLI)&lt;/a&gt;&lt;/span&gt; or AWS SDK installed locally.&lt;/li&gt; 
 &lt;li&gt;For multi-account environments, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/organizations" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Organizations&lt;/a&gt;&lt;/span&gt; should already be configured.&lt;/li&gt; 
 &lt;li&gt;Basic familiarity with IAM policies and Python will help you customize the solution to your needs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Solution overview&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This solution uses a five-phase workflow diagram to detect, remediate, and continuously monitor over-permissioned S3 buckets across your AWS accounts. The following workflow diagram illustrates the high-level end-to-end process for identifying and remediating over-permissioned S3 buckets across your &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt; environment.&lt;/p&gt; 
&lt;div id="attachment_43143" style="width: 1512px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43143" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/s3-audit-flowchart-v3-Figure-1.png" alt="Figure 1: Amazon S3 over-permissive access – Detection, remediation, monitoring and cleanup workflow" width="1502" height="722" class="size-full wp-image-43143"&gt;
 &lt;p id="caption-attachment-43143" class="wp-caption-text"&gt;Figure 1: Amazon S3 over-permissive access – Detection, remediation, monitoring and cleanup workflow&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;The diagram in Figure 1 consists of five phases:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;b&gt;Setup and prerequisites&lt;/b&gt; – Configure AWS Organizations or multi-account access, designate a central security account, deploy &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/config" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Config&lt;/a&gt;&lt;/span&gt; across all accounts, and enable &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/security-hub" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Security Hub&lt;/a&gt;&lt;/span&gt; with a central administrator.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Detection and identification&lt;/b&gt; – Deploy AWS Config rules (such as s3-bucket-public-read-prohibited and s3-bucket-public-write-prohibited) and run an audit Lambda function that scans each S3 bucket. The function checks three areas: Public Access Block configuration, bucket policy status, and bucket ACL grants. Buckets with issues are added to a risky buckets list. The function then generates a report in CSV and JSON format, uploads it to an output S3 bucket, and sends an SNS alert.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Remediation&lt;/b&gt; – Address findings using one or more approaches – Apply restrictive bucket policies to deny public read/write access and restrict access to specific IAM principals; deploy a remediation Lambda function to automatically update bucket policies and disable public access settings; or use CloudFormation StackSets to deploy standardized policies across multiple accounts.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Continuous monitoring&lt;/b&gt; – Schedule the audit Lambda function for recurring scans (daily or weekly) using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/eventbridge" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon EventBridge&lt;/a&gt;&lt;/span&gt;. Use EventBridge to detect policy changes, configure automated notifications for new violations, enable IAM Access Analyzer for S3 to identify external access, and run regular compliance scans.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Resource cleanup&lt;/b&gt; – Review and delete resources created during the audit that are no longer needed, including Lambda functions and IAM roles, EventBridge rules, SNS topics and subscriptions, audit output S3 buckets, AWS Config rules, and Security Hub (if enabled only for this audit).&lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Cost considerations&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This section covers the AWS services used in this solution and their associated costs so you can estimate spend before deployment. The primary cost drivers are AWS Config and Security Hub, which scale with the number of accounts and resources you monitor. Lambda, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/eventbridge" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon EventBridge&lt;/a&gt;&lt;/span&gt;, Amazon SNS, and Amazon S3 typically add minimal costs for most environments. Start with a pilot in one or two accounts to validate costs before scaling.&lt;/p&gt; 
&lt;ul id="rte-546ac220-4fdf-11f1-894a-cbac86b87455" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;AWS Config&lt;/b&gt; – Charges per configuration item recorded and per rule evaluation. Costs scale with the number of accounts and resources tracked.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Security Hub&lt;/b&gt; – Charges per account per AWS Region for security checks and finding ingestion.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Lambda&lt;/b&gt; – Charges per request and per GB-second of compute time.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;EventBridge&lt;/b&gt; – Scheduled rules are free. Custom event bus usage might incur charges.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Amazon SNS&lt;/b&gt; – Charges per notification delivered.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Amazon S3&lt;/b&gt; – Storage costs for audit report output files. Minimal for most environments.&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam/access-analyzer" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS IAM Access Analyzer&lt;/a&gt;&lt;/span&gt; – Check the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam/access-analyzer/pricing/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS IAM Access Analyzer pricing page&lt;/a&gt;&lt;/span&gt; to understand which features have costs associated with them.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Check the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/pricing/" target="_blank" rel="noopener" data-cms-ai="0"&gt;service pricing pages&lt;/a&gt;&lt;/span&gt; for current rates. Use the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://calculator.aws/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Pricing Calculator&lt;/a&gt;&lt;/span&gt; to estimate costs for your specific environment before enabling services across all accounts. Consider starting with a pilot in one or two accounts to validate costs before scaling.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Detect and report over-permissioned buckets&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This section walks you through setting up the audit environment, deploying the Lambda-based scanner, and generating reports of over-permissioned S3 buckets across your accounts. Follow these steps to identify over-permissioned S3 buckets in your multi-account environment, starting with preparing your environment for an Amazon S3 audit.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;To set up the multi-account audit environment:&lt;/b&gt;&lt;/p&gt; 
&lt;ol id="rte-a3aa8bf0-508d-11f1-874b-6968d1f9025d" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;&lt;b&gt;Set up AWS Organizations or multi-account access&lt;/b&gt;. Set up centralized management of your AWS accounts using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Organizations&lt;/a&gt;&lt;/span&gt; or configure cross-account IAM roles.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Choose a central security account&lt;/b&gt;. Choose one account as your security/audit account. This account will run the audit Lambda function and collect results from member accounts.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Create an Amazon SNS topic for alerts&lt;/b&gt;. Subscribe your security team to receive notifications when over-permissioned buckets are detected. Note the topic Amazon Resource Name (ARN) from the output—you will need it when creating the Lambda execution role (step 6) and the Lambda function (step 9). Confirm the email subscription before testing; Amazon SNS doesn’t deliver alerts until the subscription is confirmed. Learn more in the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/sns/latest/dg/welcome.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon SNS Developer Guide&lt;/a&gt;&lt;/span&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;(Optional): Create an S3 bucket for audit reports&lt;/b&gt;. If you plan to use Script v2 for historical reporting and trend analysis, create a dedicated bucket now. Skip this step if you only need real-time alerts using Script v1.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Plan cross-account IAM roles&lt;/b&gt;. The central security account needs permission to scan member accounts. Design cross-account roles that: 
  &lt;ol type="a"&gt; 
   &lt;li&gt;Grant minimum Amazon S3 read permissions (list buckets, read policies, ACLs, public access configurations).&lt;/li&gt; 
   &lt;li&gt;Include an external ID condition to mitigate the confused deputy problem.&lt;/li&gt; 
   &lt;li&gt;Can be deployed consistently using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS CloudFormation StackSets&lt;/a&gt;&lt;/span&gt;.&lt;/li&gt; 
   &lt;li&gt;See the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;IAM documentation on creating cross-account roles&lt;/a&gt;&lt;/span&gt;, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;The confused deputy problem&lt;/a&gt;&lt;/span&gt;, and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;IAM security best practices&lt;/a&gt;&lt;/span&gt; for additional guidance on role configuration and trust policies. &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; The specific trust policy and permissions policy for your cross-account roles will depend on organizational requirements. Work with your IAM administrators to grant minimum necessary access for the audit function.&lt;/p&gt;&lt;/li&gt; 
  &lt;/ol&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Create the Lambda execution role&lt;/b&gt;. Create an IAM role for your Lambda function with the permissions it needs to scan buckets, publish alerts, and write logs. Apply the principle of least privilege—grant only the minimum Amazon S3 read permissions required for the audit (such as, listing buckets, reading bucket policies, ACLs, and public access block configurations), Amazon SNS publish permission for the alert topic created in step 3, Amazon S3 write permission for the output bucket created in step 4 (Script v2), and Amazon CloudWatch Logs permissions. For multi-account scanning, also include &lt;code class="CodeInline" style="color: #000"&gt;sts:AssumeRole&lt;/code&gt;permission for the cross-account role ARNs created in step 5. The &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Lambda execution role documentation&lt;/a&gt;&lt;/span&gt; has instructions on creating and configuring execution roles.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;To deploy the S3 audit solution &lt;/b&gt;Deploy the audit components 
  &lt;ol type="a"&gt; 
   &lt;li&gt;&lt;b&gt;Enable AWS Config in member accounts.&lt;/b&gt; AWS Config provides compliance monitoring and can detect when S3 buckets are created or modified with public access settings. This will enable the Lambda-based audit to receive real-time detection between scheduled scans. The &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Config Developer Guide&lt;/a&gt;&lt;/span&gt; has setup instructions. Deploy pre-defined AWS Config rules to identify overly permissive settings. These managed rules provide automated compliance checking. When AWS Config detects violations, it sends findings to Security Hub (configured in step 8) for centralized visibility alongside the Lambda audit results. 
    &lt;ul id="rte-78678320-4fe9-11f1-b977-a9c3bc171583" class="rte2-style-ul"&gt; 
     &lt;li&gt;s3-bucket-public-read-prohibited&lt;/li&gt; 
     &lt;li&gt;s3-bucket-public-write-prohibited&lt;/li&gt; 
     &lt;li&gt;Create AWS Config rules for specific permission patterns. For the full list of available rules, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-aws-config.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Config managed rules reference&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
    &lt;/ul&gt; &lt;/li&gt; 
  &lt;/ol&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Enable Security Hub for centralized visibility.&lt;/b&gt; Enable &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/security-hub" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Security Hub&lt;/a&gt;&lt;/span&gt; in member accounts and configure the central security account as the administrator. Security Hub aggregates findings from AWS Config rules (step 7), IAM Access Analyzer (enabled later), and can receive custom findings from your Lambda audit function, providing a single dashboard for Amazon S3 security issues across your organization. See the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Security Hub User Guide&lt;/a&gt;&lt;/span&gt; for setup details.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Deploy the audit Lambda function.&lt;/b&gt; Deploy a Python Lambda function using the Boto3 library to list S3 buckets, check their policies, ACLs, and IAM permissions, and identify over-permissioned buckets. See the example scripts that follow.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Important:&lt;/b&gt; These code examples aren’t production ready. Adapt them to meet your organization’s requirements and test them in a non-production environment before deployment.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;&lt;b&gt;Choose your approach:&lt;/b&gt;&lt;/p&gt; 
&lt;ul id="rte-41f8db20-4fe1-11f1-894a-cbac86b87455" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Script v1&lt;/b&gt; – Best for immediate SNS alerts when issues are detected.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Script v2&lt;/b&gt; – Best for historical reports, trend analysis using BI tools.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Both scripts&lt;/b&gt; – Best for different schedules and ongoing needs.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Audit Lambda function – Example script v1 (Scan and alert)&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;The following is an example of a Lambda function script for reference purposes. Review, adapt, and test before use in your environment, it scans all S3 buckets in the current account and checks for:&lt;/p&gt; 
&lt;ul id="rte-aea65f00-4fe5-11f1-b977-a9c3bc171583" class="rte2-style-ul"&gt; 
 &lt;li&gt;Public Access block configuration gaps&lt;/li&gt; 
 &lt;li&gt;Bucket policies that allow public access&lt;/li&gt; 
 &lt;li&gt;ACL grants to AllUsers&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note: &lt;/b&gt;Replace placeholder values with actual values before deployment:&lt;/p&gt; 
 &lt;ul id="rte-249162e0-4fec-11f1-8be8-912ef48c262a" class="rte2-style-ul"&gt; 
  &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;REGION&amp;gt;&lt;/code&gt;– Your AWS Region (for example, us-east-1)&lt;/li&gt; 
  &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;ACCOUNT_ID&amp;gt;&lt;/code&gt;– Your 12-digit AWS account ID&lt;/li&gt; 
  &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;TOPIC_NAME&amp;gt;&lt;/code&gt;– The name of your SNS topic created in step 3&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/blockquote&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;import boto3
import json

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    sns = boto3.client('sns')
    risky_buckets = []
    errors = []

    try:
        buckets = s3.list_buckets()['Buckets']
    except Exception as e:
        return {'statusCode': 500, 'body': f'Failed to list buckets: {str(e)}'}

    for bucket in buckets:
        bucket_name = bucket['Name']
        issues = []

        try:
            # Check Public Access Block — all four settings should be enabled
            try:
                pab = s3.get_public_access_block(Bucket=bucket_name)
                config = pab['PublicAccessBlockConfiguration']
                if not all([
                    config.get('BlockPublicAcls'),      # Block new public ACLs
                    config.get('BlockPublicPolicy'),     # Block new public bucket policies
                    config.get('IgnorePublicAcls'),      # Ignore existing public ACLs
                    config.get('RestrictPublicBuckets')   # Restrict access to public buckets
                ]):
                    issues.append('Public Access Block not fully enabled')
            except s3.exceptions.NoSuchPublicAccessBlockConfiguration:
                issues.append('No Public Access Block configured')

            # Check bucket policy — flag if policy status is public
            try:
                policy_status = s3.get_bucket_policy_status(Bucket=bucket_name)
                if policy_status['PolicyStatus']['IsPublic']:
                    issues.append('Bucket policy allows public access')
            except s3.exceptions.NoSuchBucketPolicy:
                pass  # No bucket policy is acceptable

            # Check bucket ACL
            acl = s3.get_bucket_acl(Bucket=bucket_name)
            for grant in acl.get('Grants', []):
                grantee = grant.get('Grantee', {})
                uri = grantee.get('URI', '')
                # 'AllUsers' = anonymous public access
                # 'AuthenticatedUsers' = any AWS account (still overly permissive)
                if grantee.get('Type') == 'Group' and ('AllUsers' in uri or 'AuthenticatedUsers' in uri):
                    issues.append('Bucket ACL grants public access')
                    break

            if issues:
                risky_buckets.append({'bucket': bucket_name, 'issues': issues})

        except Exception as e:
            errors.append(f'{bucket_name}: {str(e)}')

    # Send alert if risky buckets found
    if risky_buckets:
        message = f'Found {len(risky_buckets)} buckets with public access:\n\n'
        for item in risky_buckets:
            message += f"  {item['bucket']}: {', '.join(item['issues'])}\n"

        sns.publish(
            TopicArn='arn:aws:sns:&amp;lt;REGION&amp;gt;:&amp;lt;ACCOUNT_ID&amp;gt;:&amp;lt;TOPIC_NAME&amp;gt;',
            Subject='S3 Public Access Alert',
            Message=message
        )

    return {
        'statusCode': 200,
        'body': json.dumps({
            'risky_buckets': risky_buckets,
            'errors': errors,
            'total_checked': len(buckets)
        })
    }&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;b&gt;Multi-account scanning:&lt;/b&gt; This script scans the current account only. To scan across member accounts, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="/Users/hkolekar/Documents/3-AWS-Projects/Kiro/SuperTam/Blogs/s3-updated-content-3bv4.html#multi-account" target="_blank" rel="noopener" data-cms-ai="0"&gt;Multi-account extension&lt;/a&gt;&lt;/span&gt; section later in this post.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Audit Lambda function – Example script v2 (CSV and JSON report)&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;The following is an example Lambda function script for reference purposes. Before deploying any script, review error handling, logging, output structure, and permissions. This script generates CSV and JSON output files and uploads them to an S3 bucket for reporting and business intelligence (BI) dashboard integration.&lt;/p&gt; 
&lt;p&gt;You can deploy both functions with different EventBridge schedules, for example, Script v1 daily for alerts and Script v2 weekly for reports.&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Before you deploy this script, replace &lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;OUTPUT_BUCKET_NAME&amp;gt;&lt;/code&gt; with the S3 bucket you created for audit reports in step 4.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;import boto3
import csv
import json
import os

def lambda_handler(event, context):
    s3 = boto3.client('s3')
    buckets = s3.list_buckets()['Buckets']

    full_access_buckets = []
    for bucket in buckets:
        bucket_name = bucket['Name']
        try:
            bucket_policy = s3.get_bucket_policy(Bucket=bucket_name)['Policy']
            policy = json.loads(bucket_policy)
            for statement in policy['Statement']:
                if (statement['Effect'] == 'Allow'
                    and statement['Principal'] == '*'
                    and 'Action' in statement
                    and 's3:*' in statement['Action']):
                    full_access_buckets.append({'BucketName': bucket_name})
                    break
        except s3.exceptions.ClientError as e:
            if e.response['Error']['Code'] != 'NoSuchBucketPolicy':
                print(f'Error checking bucket policy for {bucket_name}: {e}')

    # Output CSV
    csv_output = os.path.join('/tmp', 'full_access_buckets.csv')
    with open(csv_output, 'w', newline='') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=['BucketName'])
        writer.writeheader()
        writer.writerows(full_access_buckets)

    # Output JSON
    json_output = os.path.join('/tmp', 'full_access_buckets.json')
    with open(json_output, 'w') as jsonfile:
        json.dump(full_access_buckets, jsonfile, indent=2)

    # Upload to Amazon S3
    output_bucket = '&amp;lt;OUTPUT_BUCKET_NAME&amp;gt;'
    s3.upload_file(csv_output, output_bucket, 'full_access_buckets.csv')
    s3.upload_file(json_output, output_bucket, 'full_access_buckets.json')

    return {
        'statusCode': 200,
        'body': json.dumps(f'CSV and JSON files uploaded to {output_bucket}')
    }&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Important:&lt;/b&gt; If this function runs on a schedule, consider implementing a file naming strategy with timestamps to prevent overwriting previous reports or establish a lifecycle policy to manage retention. Include the output bucket in your cleanup procedures when the auditing process is no longer needed.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;&lt;b&gt;What if no over-permissioned buckets are found?&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;If the audit scan returns zero risky buckets, document the clean baseline for future comparison and move to the verification and monitoring phase to so new buckets or policy changes don’t introduce risk over time.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Multi-account extension&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;The preceding example scripts scan buckets in the current account only. To scan across member accounts in your organization, add the following &lt;code class="CodeInline" style="color: #000"&gt;AssumeRole&lt;/code&gt; logic. This function assumes the cross-account IAM role you created during setup, then returns an Amazon S3 client with temporary credentials for each member account.&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Before you deploy, configure the following Lambda environment variables:&lt;/p&gt; 
 &lt;ul id="rte-be591ea0-4fe6-11f1-b977-a9c3bc171583" class="rte2-style-ul"&gt; 
  &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;MEMBER_ACCOUNTS&amp;gt;&lt;/code&gt; – Comma-separated list of 12-digit account IDs to scan (for example, &lt;code class="CodeInline" style="color: #000"&gt;111111111111,222222222222&lt;/code&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;CROSS_ACCOUNT_ROLE_NAME&amp;gt;&lt;/code&gt; – The IAM role name created in each member account (for example, &lt;code class="CodeInline" style="color: #000"&gt;S3AuditRole&lt;/code&gt;)&lt;/li&gt; 
  &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;EXTERNAL_ID&amp;gt;&lt;/code&gt; – The external ID configured in the trust policy (for example, &lt;code class="CodeInline" style="color: #000"&gt;s3-audit-external-id&lt;/code&gt;)&lt;/li&gt; 
 &lt;/ul&gt; 
&lt;/blockquote&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;import boto3
import os

def get_member_s3_clients():
    """
    Assumes the cross-account audit role in each member account
    and returns a list of (account_id, s3_client) tuples.
    """
    sts = boto3.client('sts')
    member_accounts = os.environ.get('&amp;lt;MEMBER_ACCOUNTS&amp;gt;', '').split(',')
    cross_account_role_name = os.environ.get('&amp;lt;CROSS_ACCOUNT_ROLE_NAME&amp;gt;')
    external_id = os.environ.get('&amp;lt;EXTERNAL_ID&amp;gt;')

    clients = []
    for account_id in member_accounts:
        account_id = account_id.strip()
        if not account_id:
            continue

        try:
            assumed_role = sts.assume_role(
                RoleArn=f'arn:aws:iam::{account_id}:role/{cross_account_role_name}',
                RoleSessionName='S3AuditSession',
                ExternalId=external_id
            )

            # Create S3 client with assumed credentials
            s3_client = boto3.client(
                's3',
                aws_access_key_id=assumed_role['Credentials']['AccessKeyId'],
                aws_secret_access_key=assumed_role['Credentials']['SecretAccessKey'],
                aws_session_token=assumed_role['Credentials']['SessionToken']
            )
            clients.append((account_id, s3_client))

        except Exception as e:
            print(f'Failed to assume role in account {account_id}: {e}')

    return clients
&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;To scan each member account, replace the single-account &lt;code class="CodeInline" style="color: #000"&gt;s3.list_buckets()&lt;/code&gt; call with a loop over member accounts:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;def lambda_handler(event, context):
    all_risky_buckets = []
    all_errors = []

    # Scan each member account
    for account_id, s3_client in get_member_s3_clients():
        try:
            buckets = s3_client.list_buckets()['Buckets']
            for bucket in buckets:
                # ... same scanning logic as the single-account scripts ...
                # Use s3_client instead of s3 for each API call
                pass
        except Exception as e:
            all_errors.append(f'Account {account_id}: {e}')

    # ... same alerting/reporting logic ...
&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;The Lambda execution role in the central security account needs &lt;code class="CodeInline" style="color: #000"&gt;sts:AssumeRole&lt;/code&gt; permission for the cross-account role ARNs. Add this to the execution role policy you created in step 5.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Remediate elevated access&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;This section describes how to fix over-permissioned buckets using account-level controls, bucket policies, and optional automation. Any elevated access that you find needs to be remediated.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Enable Amazon S3 Block Public Access (account level)&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;Before applying individual bucket policies, enable Amazon S3 Block Public Access at the account level. This prevents buckets in the account from being made public, regardless of individual bucket policies or ACLs. See the&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;S3 Block Public Access documentation&lt;/a&gt;&lt;/span&gt; for configuration details. See the following example AWS CLI command; replace &lt;code class="CodeInline" style="color: #000"&gt;&amp;lt;ACCOUNT_ID&amp;gt;&lt;/code&gt; with the ID of the account you’re using to manage resource access:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;aws s3control put-public-access-block \
  --account-id &amp;lt;ACCOUNT_ID&amp;gt; \
  --public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;For multi-account environments, deploy this setting across member accounts using AWS CloudFormation StackSets or AWS Organizations service control policies (SCPs).&lt;/p&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Important:&lt;/b&gt; Before enabling account-level S3 Block Public Access, check whether any workloads need public bucket access (for example, static website hosting, public dataset sharing). Coordinate with your application teams to identify any exceptions.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Remediate using bucket policies&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Implement bucket policies that restrict access to specific IAM users, roles, or accounts. When crafting policies, apply the principle of least privilege and include only the actions and principals required for your use case.&lt;/p&gt; 
&lt;p&gt;Example S3 bucket policy: deny public read/write access. Modify the resource ARN, actions, and conditions to match your requirements:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:PutObject", "s3:PutObjectAcl",
        "s3:GetObject", "s3:GetObjectAcl",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::&amp;lt;BUCKET_NAME&amp;gt;/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": ["public-read", "public-read-write"]
        }
      }
    }
  ]
}&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;Example S3 bucket policy: restrict access to specific IAM principals. Replace &amp;lt;ACCOUNT_ID&amp;gt;, &amp;lt;USERNAME&amp;gt;, and &amp;lt;ROLE_NAME&amp;gt;:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="language-text"&gt;&lt;code class="language-text"&gt;{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowObjectAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::&amp;lt;ACCOUNT_ID&amp;gt;:user/&amp;lt;USERNAME&amp;gt;",
          "arn:aws:iam::&amp;lt;ACCOUNT_ID&amp;gt;:role/&amp;lt;ROLE_NAME&amp;gt;"
        ]
      },
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": "arn:aws:s3:::&amp;lt;BUCKET_NAME&amp;gt;/*"
    },
    {
      "Sid": "AllowBucketAccess",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::&amp;lt;ACCOUNT_ID&amp;gt;:user/&amp;lt;USERNAME&amp;gt;",
          "arn:aws:iam::&amp;lt;ACCOUNT_ID&amp;gt;:role/&amp;lt;ROLE_NAME&amp;gt;"
        ]
      },
      "Action": ["s3:ListBucket", "s3:GetBucketLocation"],
      "Resource": "arn:aws:s3:::&amp;lt;BUCKET_NAME&amp;gt;"
    }
  ]
}&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;See the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon S3 bucket policy documentation&lt;/a&gt;&lt;/span&gt; for additional examples and guidance.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Automate remediation with Lambda or CloudFormation StackSets (optional):&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;You can also remediate using Lambda or CloudFormation Stacksets:&lt;/p&gt; 
&lt;ul id="rte-10fa4110-52f4-11f1-adca-fb9e440420a5" class="rte2-style-ul"&gt; 
 &lt;li&gt;Create Lambda functions to automatically update bucket policies or disable public access settings for flagged buckets&lt;/li&gt; 
 &lt;li&gt;Use CloudFormation StackSets to deploy standardized bucket policies and S3 Block Public Access settings across multiple accounts&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Verify your remediation&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;This section explains how to confirm that your fixes are effective before moving to ongoing monitoring. After applying remediation, verify the fix is effective before setting up ongoing monitoring:&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;b&gt;Re-run the audit Lambda function&lt;/b&gt; – Confirm the previously flagged buckets no longer appear in the risky buckets list.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Check Security Hub compliance&lt;/b&gt; – Verify the compliance status has changed from FAILED to PASSED for Amazon S3-related controls.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Validate with IAM Access Analyzer&lt;/b&gt; – Review findings for the remediated S3 buckets. Active findings should resolve automatically after public access is removed.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Test application functionality&lt;/b&gt; – Confirm that legitimate workloads continue to function correctly.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;Document the verification results for your auditing needs. If any S3 buckets still show issues, investigate whether the policy was applied correctly or if there are conflicting permissions.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Automation opportunities&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This section covers optional strategies to automate ongoing detection and maintain your security posture without manual intervention.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;&lt;b&gt;(Optional) Schedule recurring scans with Amazon EventBridge&lt;/b&gt; 
  &lt;ul id="rte-10fa6820-52f4-11f1-adca-fb9e440420a5" class="rte2-style-ul"&gt; 
   &lt;li&gt;Regular security scans help identify new issues arising from configuration changes or newly created S3 buckets. When new security risks are detected, Amazon SNS sends an alert and automatically initiates the remediation phase (Workflow 2 in Figure 1). To avoid repeated alerts, you can configure the audit Lambda function to run on a schedule and compare current results with the previous baseline to generate notifications when new findings are discovered.&lt;/li&gt; 
   &lt;li&gt;For ongoing monitoring, you can schedule the audit Lambda function to run on a recurring basis using EventBridge. Create a scheduled rule with a cron expression (for example, daily at 6:00 AM UTC or weekly on Mondays), add the Lambda function as the target, and grant EventBridge permission to invoke it. See &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon EventBridge scheduling documentation&lt;/a&gt;&lt;/span&gt; for instructions on creating scheduled rules and configuring targets.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Enable IAM Access Analyzer for Amazon S3&lt;/b&gt; 
  &lt;ul id="rte-10fa6821-52f4-11f1-adca-fb9e440420a5" class="rte2-style-ul"&gt; 
   &lt;li&gt;IAM Access Analyzer monitors bucket policies, ACLs, and access points to identify buckets accessible from outside your account or organization. Create an analyzer scoped to your organization or individual account, then review findings to identify unintended external access. Findings automatically flow into Security Hub when both services are enabled, giving you a dashboard view for Amazon S3 security findings. See the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;IAM Access Analyzer documentation&lt;/a&gt;&lt;/span&gt; for setup and usage instructions.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Automate notifications for policy drift&lt;/b&gt; 
  &lt;ul id="rte-22813780-8234-11f1-bd3b-f187a5021872" class="rte2-style-ul"&gt; 
   &lt;li&gt;Recurring scans might surface new findings from policy drift or newly created buckets. When new risks are detected, Amazon SNS alert triggers and the remediation cycle repeat (as shown in Workflow 2 in Figure 1) sends email notifications. Configure the audit Lambda function to compare current scan results against the previous baseline and alert on new findings for ongoing reviews.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Clean up&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This section lists the resources created during this walkthrough that you should review and remove when they are no longer needed. If the following services were not previously active in your account, leaving them enabled might result in additional ongoing charges. See the &lt;b&gt;Cost considerations&lt;/b&gt; section for details. Review and remove unused resources to optimize costs.&lt;/p&gt; 
&lt;p&gt;Delete or disable the following script-generated resources if they’re not required after outputs are generated. Focus first on Lambda functions and EventBridge rules if you’re not running recurring scans. If you enabled AWS Config or Security Hub specifically for this audit, evaluate whether you need them for other compliance requirements before disabling.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;b&gt;Lambda – &lt;/b&gt;Functions, IAM roles, and policies created for auditing&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Amazon EventBridge – &lt;/b&gt;Scheduled rules created for recurring audit triggers&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Amazon SNS – &lt;/b&gt;Topics and subscriptions created for notifications&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Amazon S3 – &lt;/b&gt;Buckets containing script-generated audit output files&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;AWS Config – &lt;/b&gt;Rules and recorders if no longer needed for compliance&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Security Hub – &lt;/b&gt;Disable if enabled solely for this audit&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;IAM Access Analyzer – &lt;/b&gt;Delete the analyzer if no longer needed for ongoing monitoring&lt;/li&gt; 
&lt;/ul&gt; 
&lt;blockquote&gt;
 &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Be careful when deleting data and consider temporarily disabling services first to check for dependencies. Only delete resources generated as part of your audit outputs. Verify you have retained any necessary results before proceeding. Verify resources are not used by other workloads before deletion.&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Best practices&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This section provides recommendations to maintain secure Amazon S3 configurations long-term. To learn more about maintaining secure Amazon S3 configurations, review the AWS documentation links provided in the conclusion. The following recommendations aren’t exhaustive. Adapt and extend them based on your organization’s evolving security requirements and AWS best practices guidance. After you’ve fixed existing issues, these practices help you maintain secure Amazon S3 configurations.&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;b&gt;Start with account-level controls – &lt;/b&gt;Enable S3 Block Public Access at the account level. This prevents buckets from becoming public even if someone misconfigures an individual bucket policy. For multi-account environments, enforce this through AWS Organizations SCPs.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Automate detection – &lt;/b&gt;Use IAM Access Analyzer to detect external access. Schedule your audit Lambda function with EventBridge to catch new issues weekly or daily, depending on your change frequency. Compare scan results against previous baselines to identify drift.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Standardize across accounts – &lt;/b&gt;Use CloudFormation StackSets to deploy the same secure configuration to all accounts in your organization, reducing the chance of configuration drift. Use StackSets for IAM roles, AWS Config rules, and S3 Block Public Access settings.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;b&gt;Additional security measures&lt;/b&gt;&lt;/p&gt; 
&lt;ul id="rte-4826fea1-4feb-11f1-8e3a-fd4d02f73344" class="rte2-style-ul"&gt; 
 &lt;li&gt;Regularly review and rotate cross-account IAM role credentials and external IDs&lt;/li&gt; 
 &lt;li&gt;Implement Amazon S3 server-side encryption (SSE-S3 or SSE-KMS) for data at rest&lt;/li&gt; 
 &lt;li&gt;Enable S3 access logging and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cloudtrail" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS CloudTrail&lt;/a&gt;&lt;/span&gt; data events for audit trails&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Conclusion&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;This section summarizes what you accomplished and suggests next steps to maintain your S3 security posture. By implementing the detection, remediation, and monitoring workflow outlined in this post, you can proactively identify and secure over-permissioned S3 buckets across your AWS environment. To maintain your ongoing security posture, enable IAM Access Analyzer for continuous monitoring and schedule recurring audits with EventBridge. To learn more about Amazon S3 security best practices, see &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Security best practices for Amazon S3&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;For more information:&lt;/b&gt;&lt;/p&gt; 
&lt;ul&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-analyzer.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Reviewing bucket access using IAM Access Analyzer for Amazon S3&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Security best practices for Amazon S3&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_develop-rules.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Config Custom Rules&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/securityhub/latest/userguide/s3-controls.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Security Hub controls for Amazon S3&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/awssupport/latest/user/security-checks.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Trusted Advisor Security Checks — Amazon S3 Bucket Permissions&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Blocking public access to your Amazon S3 storage&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule-schedule.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Creating Amazon EventBridge rules that run on a schedule&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;IAM security best practices&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Hetal-Kolekar.jpg" alt="Hetal Kolekar" width="120" height="160" class="aligncenter size-full wp-image-43148"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Hetal Kolekar&lt;/h3&gt; 
  &lt;p&gt;Hetal is a Sr. Technical Account Manager at AWS with more than 21 years of experience in Infrastructure Architecture, Security, Systems Engineering, and Consulting. He excels in leading teams to strengthen their cloud security posture and helps customers scale up their security using AWS services. Hetal is a guitarist and loves playing at church.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Manomayi-Vedam.jpg" alt="Manomayi Vedam" width="120" height="160" class="aligncenter size-full wp-image-43147"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Manonmayi Vedam&lt;/h3&gt; 
  &lt;p&gt;Manonmayi is a Senior TAM and Product Owner at AWS, specializing in AI-driven cloud enablement, security, and generative AI risk across Healthcare, Financial Services, Energy, and Public Sector. She co-leads global security programs for Fortune 500 clients, contributes to the NIST Cyber AI Profile RMF and NCCoE, and is a Fellow at SCRS with recognition from GlobeeAwards and IEEE.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Fernando-Freitas.jpg" alt="Fernando Freitas" width="120" height="160" class="aligncenter size-full wp-image-43145"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Fernando Freitas&lt;/h3&gt; 
  &lt;p&gt;Fernando is a Sr. Technical Account Manager at AWS in Salt Lake City, focused on helping customers achieve their desired outcomes with the AWS Cloud. Fernando is passionate about Identity and Security, Training and Education.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Automate certificates with ACME support in AWS Certificate Manager</title>
		<link>https://aws.amazon.com/blogs/security/automate-certificates-with-acme-support-in-aws-certificate-manager/</link>
					
		
		<dc:creator><![CDATA[Anthony Harvey]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 22:03:36 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[AWS Certificate Manager]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">49165a65deb7e1c619114da95f89ba72e86ea2df</guid>

					<description>Customers tell us that managing TLS certificates at scale is one of their biggest operational concerns. The Certification Authority Browser Forum (CA/Browser Forum) has mandated a phased reduction in maximum certificate validity for public certificates. By March 2027, the maximum validity drops to 100 days. By March 2029, it lasts for 47 days. For an […]</description>
										<content:encoded>&lt;p&gt;Customers tell us that managing TLS certificates at scale is one of their biggest operational concerns. The &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://cabforum.org/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Certification Authority Browser Forum (CA/Browser Forum)&lt;/a&gt;&lt;/span&gt; has mandated a phased reduction in maximum certificate validity for public certificates. By March 2027, the maximum validity drops to 100 days. By March 2029, it lasts for 47 days. For an organization managing 1,000 certificates, the final transition means roughly 30 renewal events every day. Renewal and rotations of renewed certificates at that cadence isn’t something manual processes or ticket-driven workflows can sustain at scale.&lt;/p&gt; 
&lt;p&gt;We recently announced Automated Certificate Management Environment (ACME) protocol support in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/certificate-manager/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Certificate Manager (ACM).&lt;/a&gt;&lt;/span&gt; With this launch, you can use the ACME clients your teams already know, including popular open source tools like certbot, cert-manager, acme.sh, and win-acme, to automate public certificate issuance and renewal for your infrastructure. Customers that are using third-party certificate authorities (CAs) can point their existing ACME-compatible clients at ACM instead of their current CA, with minimal reconfiguration. This applies whether it’s running on &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt;, on premises, or in a hybrid environment. Certificates created through ACME are registered in ACM, giving you a unified view of your entire certificate inventory.&lt;/p&gt; 
&lt;p&gt;This post covers how the feature works, how to get started, and the controls and best practices to help you manage certificate issuance at scale.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Background&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;ACME is an open source protocol that automates the process of verifying domain ownership and issuing certificates and has become a standard mechanism for certificate automation. While ACM has long provided managed certificate issuance and renewal for AWS-integrated services such as &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/elasticloadbalancing/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Elastic Load Balancing (ELB)&lt;/a&gt;&lt;/span&gt;, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cloudfront/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon CloudFront&lt;/a&gt;&lt;/span&gt;, and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/api-gateway/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon API Gateway&lt;/a&gt;&lt;/span&gt;, many customers also need to automate certificates for their own infrastructure, including servers they manage in their data centers, Kubernetes clusters, Internet of Things (IoT) fleets, and hybrid environments. Until now, those customers had to turn to external providers. This launch brings the ACM automation model to that same infrastructure, using the standard ACME protocol with AWS managed certificate endpoints.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;How it works&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The feature introduces a new centrally provisioned and managed resource type: the ACME endpoint. Each endpoint is an AWS resource with a unique ACME directory URL and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/span&gt;-based access controls. You create and manage endpoints through the ACM API or AWS Management Console, and point your existing ACME clients at the endpoint URL. Certificates issued through your endpoint are automatically registered with ACM, appearing in your certificate inventory alongside certificates created by the &lt;code class="CodeInline" style="color: #000"&gt;RequestCertificate&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;ImportCertificate&lt;/code&gt; API calls.&lt;/p&gt; 
&lt;p&gt;The architecture separates into two planes. In the control plane, PKI administrators use ACM APIs to create ACME endpoints, pre-approve the domains an endpoint is allowed to issue for, and generate external account binding (EAB) credentials. In the data plane, ACME clients register with an endpoint using EAB credentials and request certificates for domains the administrator has already validated. This architecture is how we provide customers the ability to scale. Instead of each client proving domain ownership on every request, a principal with appropriate ACM permissions (typically your PKI administrator) validates domains once at the endpoint level, and then application owners don’t need DNS credentials to get a certificate.&lt;/p&gt; 
&lt;p&gt;Adding to the data plane, EABs control client access to the endpoints. Each EAB is bound to an IAM role that controls what certificate operations the ACME client can perform, and credentials you generate in ACM are distributed to authorized ACME clients. An ACME client authorized for one endpoint can’t use a different endpoint. This creates security boundaries between environments. For example, a client authorized for your development endpoint can’t obtain certificates from your production endpoint.&lt;/p&gt; 
&lt;p&gt;Figure 1 shows the ACME request flow through ACM. An ACME client authenticates to an ACME endpoint using EAB credentials. The endpoint routes certificate orders to Amazon Trust Services for issuance. Issued certificates are registered in ACM inventory, where &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/eventbridge" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon EventBridge&lt;/a&gt;&lt;/span&gt; and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cloudtrail" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS CloudTrail&lt;/a&gt;&lt;/span&gt; provide expiration alerting and audit logging.&lt;/p&gt; 
&lt;div id="attachment_43236" style="width: 678px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43236" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/06/acmeblog-Figure1.png" alt="Figure 1: An ACME architecture and workflow" width="668" height="522" class="size-full wp-image-43236"&gt;
 &lt;p id="caption-attachment-43236" class="wp-caption-text"&gt;Figure 1: An ACME architecture and workflow&lt;/p&gt;
&lt;/div&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Getting started&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Getting started with the new ACME feature in ACM is straightforward. Use the following steps to create your first ACME-generated certificate.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Prerequisites&lt;/h3&gt; 
&lt;/div&gt; 
&lt;ul id="rte-26300fe2-69e4-11f1-b9da-514cf0b7f895" class="rte2-style-ul"&gt; 
 &lt;li&gt;An AWS account with permissions to create and manage ACM resources&lt;/li&gt; 
 &lt;li&gt;An ACME client installed on your infrastructure (for example, Certbot, cert-manager, acme.sh, or others)&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cli" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Command Line Interface (AWS CLI)&lt;/a&gt;&lt;/span&gt; installed on your device (see this &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/blogs/aws/automate-public-tls-certificate-issuance-with-acme-support-in-aws-certificate-manager/" target="_blank" rel="noopener" data-cms-ai="0"&gt;blog post&lt;/a&gt;&lt;/span&gt; for the console equivalent)&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/route53" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Route 53&lt;/a&gt;&lt;/span&gt; hosted zone for your domain, or the ability to create a CNAME record with your DNS provider&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Step 1: Create an ACME endpoint&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Before you can use ACME clients with ACM, you need to create an ACME endpoint. This endpoint provides the URL that your ACME clients will use to request certificates.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Run the following command from the AWS CLI to create an ACME endpoint: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;aws acm create-acme-endpoint \
  --authorization-behavior PRE_APPROVED \
  --certificate-authority '{"PublicCertificateAuthority":{"AllowedKeyAlgorithms":["EC_prime256v1"]}}&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Note the endpoint Amazon Resource Name (ARN) from the response. 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;{"AcmeEndpointArn": "arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555"}&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Run the following command to retrieve the endpoint URL, replacing the ARN with your endpoint ARN: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;aws acm describe-acme-endpoint \
--acme-endpoint-arn arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Save the output of the ACME &lt;code class="CodeInline" style="color: #000"&gt;EndpointUrl&lt;/code&gt;: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;{
    "AcmeEndpoint": {
        "AcmeEndpointArn": "arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555",
        "EndpointUrl": "https://acm-acme-enroll.&amp;lt;region&amp;gt;.api.aws/6666666-7777-8888-9999-000000000000/directory",
        "Status": "ACTIVE",
        "AuthorizationBehavior": "PRE_APPROVED",
        "Contact": "REQUIRED",
        "CertificateAuthority": {
            "PublicCertificateAuthority": {
                "AllowedKeyAlgorithms": [
                    "EC_prime256v1"
                ]
            }
        },
        "CreatedAt": "2026-07-14T18:23:58.876000-04:00",
        "UpdatedAt": "2026-07-14T18:23:58.876000-04:00"
    }
}
&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Step 2: Pre-approve a domain&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Before ACME clients can request a certificate, the administrator validates the domain using DNS once at the endpoint level. Use &lt;code class="CodeInline" style="color: #000"&gt;DomainScope&lt;/code&gt; to control exactly which certificate patterns are allowed:&lt;/p&gt; 
&lt;ul id="rte-6ec83e82-7fd3-11f1-bab8-4d431298a72d" class="rte2-style-ul"&gt; 
 &lt;li&gt;Enabling only &lt;code class="CodeInline" style="color: #000"&gt;ExactDomain&lt;/code&gt; restricts clients to that specific name,&lt;/li&gt; 
 &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;Subdomains&lt;/code&gt; enabled allows names like &lt;code class="CodeInline" style="color: #000"&gt;api.example.com&lt;/code&gt;,&lt;/li&gt; 
 &lt;li&gt;&lt;code class="CodeInline" style="color: #000"&gt;Wildcards&lt;/code&gt; enabled allows &lt;code class="CodeInline" style="color: #000"&gt;*.example.com&lt;/code&gt;.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Leave a scope disabled to block that pattern outright, even if an otherwise-valid ACME request asks for it. For a production endpoint, consider enabling only &lt;code class="CodeInline" style="color: #000"&gt;ExactDomain&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;Subdomains&lt;/code&gt; and leaving &lt;code class="CodeInline" style="color: #000"&gt;Wildcards&lt;/code&gt; disabled for a stricter posture.&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;aws acm create-acme-domain-validation \
--acme-endpoint-arn arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555 \
--domain-name example.com \
--prevalidation-options '{"DnsPrevalidation":{"DomainScope":{"ExactDomain":"ENABLED","Subdomains":"ENABLED","Wildcards":"DISABLED"},"HostedZoneId":"Z1234567890ABC"}}'&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;If your domain is hosted in Route 53, specifying &lt;code class="CodeInline" style="color: #000"&gt;HostedZoneId&lt;/code&gt; lets ACM create the required CNAME record automatically. If your domain is hosted elsewhere, omit it and create the provided CNAME record manually with your DNS provider. Validation typically completes within a few seconds after the record is in place.&lt;/p&gt; 
&lt;p&gt;You will receive the following response back:&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;{
    "AcmeDomainValidationArn": "arn:aws:acm:us-east-1:123456789012:acme-endpoint/1111111-2222-3333-4444-555555555555/acme-domain-validation/6666666-8888-9999-0000-11111111111"
}&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Step 3: Generate EAB credentials&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;EAB credentials authenticate your ACME clients to your endpoint. Generate a unique set of credentials for each client or environment to maintain security boundaries.&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Run the following command to generate your EAB credentials, adjusting your expiration to fit your organization’s risk profile: 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;aws acm create-acme-external-account-binding \
    --acme-endpoint-arn arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000 \
    --role-arn arn:aws:iam::111122223333:role/AcmeIssuanceRole \
    --expiration '{"Value": 7, "Type": "DAYS"}'&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Note the response from a successful invocation of the command 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;{
    "ExternalAccountBinding": {
        "AcmeExternalAccountBindingArn": "arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000/acme-external-account-binding/1234567-1234-1234-1234-123456789012",
        "AcmeEndpointArn": "arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000",
        "RoleArn": "arn:aws:iam::123456789012:role/service-role/AcmAcmeIssuanceRole-XXXXXXXX",
        "ExpiresAt": "2026-07-21T18:47:50.641000-04:00"
    }
}
&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Run the following command to retrieve the credentials. You’ll need these values for your ACME client configuration the next step. 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;aws acm get-acme-external-account-binding-credentials \
    --acme-external-account-binding-arn arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000/acme-external-account-binding/22222222-2222-2222-2222-222222222222&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
 &lt;li&gt;Save the &lt;code class="CodeInline" style="color: #000"&gt;KeyId&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;MacKey&lt;/code&gt; for the next step. 
  &lt;div class="Enhancement" data-align-center=""&gt; 
   &lt;div class="Enhancement-item"&gt; 
    &lt;div class="CodeBlockWP hide-language"&gt; 
     &lt;div class="code-toolbar"&gt; 
      &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;{
    "KeyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "MacKey": "xxxxxxxx-xxxxxxxxxx-xxxxxxxxxxxxxxx"
}&lt;/code&gt;&lt;/pre&gt; 
     &lt;/div&gt; 
    &lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Step 4: Configure your ACME client&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;With your endpoint URL and EAB credentials ready, you can now configure your preferred ACME client. The following examples show configuration for two popular clients. As a reminder, the server information was retrieved in step 1, part 4 as the &lt;code class="CodeInline" style="color: #000"&gt;EndpointUrl&lt;/code&gt;.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;acme.sh:&lt;/b&gt;&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;acme.sh --issue --server https://acm-acme-enroll.us-east-1.api.aws/123457-1234-1234-123456789012/directory \
    --eab-kid &amp;lt;KeyId&amp;gt; --eab-hmac-key &amp;lt;MacKey&amp;gt; \
    --email &amp;lt;EMAIL&amp;gt; \
    -d &amp;lt;DOMAIN&amp;gt; \
    --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;b&gt;Certbot:&lt;/b&gt;&lt;/p&gt; 
&lt;div class="Enhancement" data-align-center=""&gt; 
 &lt;div class="Enhancement-item"&gt; 
  &lt;div class="CodeBlockWP hide-language"&gt; 
   &lt;div class="code-toolbar"&gt; 
    &lt;pre class="unlimited-height-code language-text"&gt;&lt;code class="language-text"&gt;certbot certonly --standalone --non-interactive --agree-tos \
  --email &amp;lt;EMAIL&amp;gt; \
  --server https://acm-acme-enroll.us-east-1.api.aws/1234567-1234-1234-123456789012/directory \
  --eab-kid &amp;lt;KeyId&amp;gt; \
  --eab-hmac-key &amp;lt;MacKey&amp;gt; \
  -d &amp;lt;DOMAIN&amp;gt;&lt;/code&gt;&lt;/pre&gt; 
   &lt;/div&gt; 
  &lt;/div&gt; 
 &lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;After the initial registration, your ACME client handles renewals.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Enterprise controls&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Other ACME alternatives can provide certificates but don’t give the same amount of control and governance for customers that need to scale their certificate environment. The following controls are available to help reduce risk across your organization.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Domain validation&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Customers managing large numbers of domains told us they need a way to prevent unauthorized certificate issuance across their domain space. Domain validation gives you this control. For each domain you validate, you enable the certificate patterns it should be allowed to issue, whether it’s &lt;code class="CodeInline" style="color: #000"&gt;ExactDomain&lt;/code&gt;, &lt;code class="CodeInline" style="color: #000"&gt;Subdomains&lt;/code&gt;, or &lt;code class="CodeInline" style="color: #000"&gt;Wildcards&lt;/code&gt;. For example, if you validate &lt;code class="CodeInline" style="color: #000"&gt;internal.example.com&lt;/code&gt; and enable only &lt;code class="CodeInline" style="color: #000"&gt;Wildcards&lt;/code&gt;, an ACME client can request &lt;code class="CodeInline" style="color: #000"&gt;*.internal.example.com&lt;/code&gt; but a request for &lt;code class="CodeInline" style="color: #000"&gt;internal.example.com&lt;/code&gt; itself or &lt;code class="CodeInline" style="color: #000"&gt;api.internal.example.com&lt;/code&gt; is rejected. This enforcement happens at the endpoint level, before requests reach the ACM certificate authority, and you can validate multiple domains under a single endpoint, each with its own scope.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Centralized certificate visibility&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Certificates issued through your ACME endpoints are registered with ACM. You can use the &lt;code class="CodeInline" style="color: #000"&gt;aws acm list-certificates&lt;/code&gt; command to see all your issued certificates.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;IAM authorization, CloudTrail audit logging and observability&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Endpoint management operations are authorized through IAM and logged to CloudTrail. You can use IAM policies to control which principals can create endpoints, generate EAB credentials, and manage domain constraints.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Best practices&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;For customers implementing ACME certificates for the first time, consider the following best practices for your organizations.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Segment endpoints along organizational or environment boundaries&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;The endpoint serves as a useful method of isolation for larger organizations. A large enterprise can create one endpoint per organizational boundary (business unit, subsidiary, or environment) instead of a single shared endpoint company-wide. Each endpoint has its own pre-approved domains and its own set of EABs, so a compromised credential in one business unit has no path to certificates in another.&lt;/p&gt; 
&lt;p&gt;However, weigh this against your operational overhead as well. A reasonable starting point is one endpoint per environment (dev, staging, andprod) within a business unit, expanding to per-business-unit endpoints only where compliance or organizational requirements call for it.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Manage EAB credentials securely&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Anyone holding a valid&lt;code class="CodeInline" style="color: #000"&gt;KeyId&lt;/code&gt;and&lt;code class="CodeInline" style="color: #000"&gt;MacKey&lt;/code&gt;for an endpoint can obtain certificates for any domain pre-approved on that endpoint, so these credentials deserve the same handling you’d give an access key.&lt;/p&gt; 
&lt;ul id="rte-c0c163f0-89ed-11f1-b267-37ecb331ead5" class="rte2-style-ul"&gt; 
 &lt;li&gt;Avoid hard coding the&lt;code class="CodeInline" style="color: #000"&gt;MacKey&lt;/code&gt;where possible by using a secret store such as &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/secrets-manager/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Secrets Manager&lt;/a&gt;&lt;/span&gt;. Distribute it only to the ACME clients that you authorize to use the endpoint.&lt;/li&gt; 
 &lt;li&gt;Set the expiration of the EAB to an acceptable level. While EAB supports long-lived credentials, not all scenarios require an indefinitely long EAB.&lt;/li&gt; 
 &lt;li&gt;When creating the role for each EAB, adhere to concept of least privilege. Creating a role per EAB, rather than sharing a role across all bindings, can help reduce risk in your AWS environment.&lt;/li&gt; 
 &lt;li&gt;Audit &lt;code class="CodeInline" style="color: #000"&gt;CreateAcmeExternalAccountBinding&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;GetAcmeExternalAccountBindingCredentials&lt;/code&gt; calls in CloudTrail separately. Because retrieving the actual key material is a distinct API call from creating the binding, alerting on retrieval events is a stronger signal of real credential distribution than binding creation alone.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Automate how EABs are associated with clients at runtime&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Generate a unique set of EAB credentials for each client or environment rather than sharing one binding across multiple ACME clients. As you begin to scale with multiple endpoints, usesome of the following patterns to reduce operational toil.&lt;/p&gt; 
&lt;ul id="rte-c0c163f1-89ed-11f1-b267-37ecb331ead5" class="rte2-style-ul"&gt; 
 &lt;li&gt;Name each EAB and its bound IAM role after the client it belongs to (team, application, environment), so the binding’s purpose is obvious from &lt;code class="CodeInline" style="color: #000"&gt;DescribeAcmeExternalAccountBinding&lt;/code&gt; output alone, without cross-referencing a spreadsheet.&lt;/li&gt; 
 &lt;li&gt;Store each client’s &lt;code class="CodeInline" style="color: #000"&gt;KeyId&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;MacKey&lt;/code&gt; under a secrets path scoped to that client (for example, a Secrets Manager path per team and environment), and let the client’s provisioning pipeline retrieve its own credentials.&lt;/li&gt; 
 &lt;li&gt;In Kubernetes, use one ClusterIssuer or namespace-scoped Issuer per EAB rather than one shared issuer across teams. This keeps the client-to-EAB association explicit in cluster config, and lets you revoke one team’s access without touching anyone else’s.&lt;/li&gt; 
 &lt;li&gt;For ephemeral infrastructure (build agents, autoscaled fleets), provision EAB credentials as part of your infrastructure-as-code or continuous integration and deployment (CI/CD) pipeline instead of a one-time manual handoff, so credential lifecycle tracks infrastructure lifecycle.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Monitor your deployment of ACME&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;ACME’s power is through automation, and organizations should monitor their ACME usage for anomalies.&lt;/p&gt; 
&lt;ul id="rte-c0c163f2-89ed-11f1-b267-37ecb331ead5" class="rte2-style-ul"&gt; 
 &lt;li&gt;Alarm on issuance failures, not just successes. At 45-day certificate validity, a silent renewal failure gives you far less runway to react than the months of time you might be used to with longer-lived certificates.&lt;/li&gt; 
 &lt;li&gt;Test renewal automation before you depend on it. Force a manual renewal against a non-production endpoint and confirm your client, monitoring, and on-call runbooks behave as expected, before the CA/Browser Forum’s shortened validity windows turn a failed renewal into a disruptive event for your organization.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Availability and pricing&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;ACME support in AWS Certificate Manager is available today in all commercial AWS Regions and will be available in AWS GovCloud (US), the China Regions, and the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.eu/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS European Sovereign Cloud&lt;/a&gt;&lt;/span&gt; &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/whitepapers/latest/aws-fault-isolation-boundaries/partitions.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;partitions&lt;/a&gt;&lt;/span&gt; at a later date. See the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/certificate-manager/pricing/" target="_blank" rel="noopener" data-cms-ai="0"&gt;ACM pricing page&lt;/a&gt;&lt;/span&gt; for more information on ACME pricing.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Conclusion&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The phased reduction in certificate validity can’t easily be solved without automation. ACME support in ACM gives you that automation through a standard protocol and standard tooling, while keeping the visibility and governance controls your security teams rely on from ACM.&lt;/p&gt; 
&lt;p&gt;To get started, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/acm/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Certificate Manager documentation&lt;/a&gt;&lt;/span&gt; or follow &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/certificate-manager/getting-started/" target="_blank" rel="noopener" data-cms-ai="0"&gt;the getting started guide&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below. &lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2024/06/14/aharveyr.jpg" alt="Anthony Harvey" width="120" height="160" class="aligncenter size-full wp-image-34565"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Anthony Harvey&lt;/h3&gt; 
  &lt;p&gt;Anthony is a Senior Security Specialist Solutions Architect for AWS in the worldwide public sector group. Prior to joining AWS, he was a chief information security officer in local government for half a decade. With his public sector experience, he has a passion for figuring out how to do more with less and leveraging that mindset to enable customers in their security journey.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2022/09/13/Chandan-Kundapur.jpg" alt="Chandan Kundapur" width="120" height="160" class="aligncenter size-full wp-image-27214"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Chandan Kundapur&lt;/h3&gt; 
  &lt;p&gt;Chandan is a Principal Product Manager on the AWS Certificate Manager (ACM) team. With over 15 years of cybersecurity experience, he has a passion for driving PKI product strategy.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Caching KMS data keys in multi-thread environments: Per-tenant encryption for event-driven systems at scale</title>
		<link>https://aws.amazon.com/blogs/security/caching-kms-data-keys-in-multi-thread-environments-per-tenant-encryption-for-event-driven-systems-at-scale/</link>
					
		
		<dc:creator><![CDATA[Maria Gutovsky]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 16:16:06 +0000</pubDate>
				<category><![CDATA[AWS Key Management Service]]></category>
		<category><![CDATA[Customer Solutions]]></category>
		<category><![CDATA[Expert (400)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[AWS Encryption SDK]]></category>
		<category><![CDATA[AWS KMS]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">f80eaf29ad5d5d38f3e3a9af41d368ee185082c8</guid>

					<description>This post assumes familiarity with envelope encryption and the AWS Encryption SDK. When your encryption system generates millions of duplicate API calls per hour, costs spiral and performance degrades. That’s exactly the challenge NICE Actimize faced while operating their global-scale, event-driven financial crime detection platform on Amazon Web Services (AWS). NICE Actimize, a leading provider […]</description>
										<content:encoded>&lt;p&gt;&lt;i&gt;This post assumes familiarity with &lt;/i&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#envelope-encryption" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;i&gt;envelope encryption&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;i&gt; and the &lt;/i&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;i&gt;AWS Encryption SDK&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;i&gt;.&lt;/i&gt;&lt;/p&gt; 
&lt;p&gt;When your encryption system generates millions of duplicate API calls per hour, costs spiral and performance degrades. That’s exactly the challenge NICE Actimize faced while operating their global-scale, event-driven financial crime detection platform on &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;NICE Actimize, a leading provider of financial crime, risk, and compliance solutions, processes millions of encrypted messages daily across hundreds of tenants. By rethinking how they cache encryption keys, they reduced their &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/kms/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Key Management Service (AWS KMS)&lt;/a&gt;&lt;/span&gt; costs by 77% while maintaining strict security guarantees and per-tenant encryption isolation.&lt;/p&gt; 
&lt;p&gt;In this post, we explore the cache stampede problem that emerges when envelope encryption meets high-concurrency, multi-tenant architectures. We walk through two solutions: the AWS-recommended hierarchical keyring pattern and a custom caching approach that NICE Actimize built for their regulated environment. These patterns apply to multi-tenant software as a service (SaaS) environments and high-throughput systems where per-tenant encryption generates significant KMS API volume.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Why per-tenant encryption matters&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Financial services systems operate under strict regulatory requirements. You must encrypt data at rest and in transit. For multi-tenant SaaS providers, this requirement might go further: each tenant’s data must be encrypted with separate keys to provide complete cryptographic isolation. If one tenant’s key is compromised, no other tenant’s data is at risk.&lt;/p&gt; 
&lt;p&gt;Consider an enterprise SaaS environment built on an event-driven architecture using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/msk/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Managed Streaming for Apache Kafka (Amazon MSK)&lt;/a&gt;&lt;/span&gt;, with many different databases for storing data and &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/sqs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Simple Queue Service (Amazon SQS)&lt;/a&gt;&lt;/span&gt; for messaging. Messages flow continuously between producers and consumers, and each message must be encrypted with the correct tenant-specific key. At scale with millions of messages daily across hundreds of tenants, this creates a massive volume of encryption and decryption operations.&lt;/p&gt; 
&lt;p&gt;To handle this volume efficiently, the standard approach is envelope encryption: a two-tier model where an AWS KMS key encrypts short-lived data keys, and those data keys encrypt the actual data. Your application can encrypt large volumes of data locally without calling AWS KMS for every operation, reducing latency and costs.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;The cache stampede problem&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Envelope encryption reduces AWS KMS calls, but it doesn’t eliminate them. Each encrypt operation still requires a data key, either generated fresh using &lt;code class="CodeInline" style="color: #000"&gt;GenerateDataKey&lt;/code&gt; or retrieved from a cache, and each decrypt operation must unwrap an encrypted data key (EDK) by calling &lt;code class="CodeInline" style="color: #000"&gt;Decrypt&lt;/code&gt;. In high-throughput systems processing millions of messages, these calls add up quickly.&lt;/p&gt; 
&lt;p&gt;The &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Encryption SDK&lt;/a&gt;&lt;/span&gt; provides a built-in solution for this: the CachingCryptoMaterialsManager. This component caches data encryption materials (data keys) locally, so your application can reuse them across multiple operations without calling AWS KMS each time. You configure a time-to-live (TTL), a maximum message-use limit, and a local cache, and the SDK handles the rest.&lt;/p&gt; 
&lt;p&gt;This approach works well under moderate load when you partition the cache by tenant AWS KMS key Amazon Resource Name (ARN) so that each tenant’s encryption materials remain cryptographically isolated. However, a critical problem emerges as concurrency scales to hundreds of threads processing millions of encrypted messages in parallel: the cache stampede, also known as the &lt;i&gt;thundering herd &lt;/i&gt;problem.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;How the stampede occurs&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;The CachingCryptoMaterialsManager caches the result of the SDK’s internal &lt;code class="CodeInline" style="color: #000"&gt;getMaterialsForEncrypt&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;decryptMaterials&lt;/code&gt; calls at the materials level. The cache stampede, however, happens at the KMS API call level. When a cached data key expires or a new, previously-unseen EDK arrives, the following sequence unfolds:&lt;/p&gt; 
&lt;ol id="rte-683592d0-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;&lt;b&gt;On encrypt – data key explosion: &lt;/b&gt;Multiple threads simultaneously call &lt;code class="CodeInline" style="color: #000"&gt;encrypt()&lt;/code&gt; for the same tenant. Each thread finds the cache entry expired and independently calls &lt;code class="CodeInline" style="color: #000"&gt;GenerateDataKey&lt;/code&gt; against AWS KMS. Instead of one thread generating a data key while others wait, N threads create N distinct data keys. Each new data key produces a unique EDK, which inflates the EDK cardinality across the system.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;On decrypt – redundant unwrap calls: &lt;/b&gt;Those extra unique EDKs propagate downstream. When consumers later read encrypted records, each distinct EDK is a separate cache key. Multiple threads encountering the same EDK simultaneously each trigger an independent &lt;code class="CodeInline" style="color: #000"&gt;Decrypt&lt;/code&gt; call to AWS KMS because the cache has no coordination mechanism to make competing threads wait for a single in-flight request.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Compounding effect: &lt;/b&gt;The encrypt-side stampede creates excess EDK cardinality, which degrades the decrypt-side cache hit ratio, which triggers more KMS calls, which drives up costs further. In the NICE Actimize case, this produced a ratio of 30% unique data keys to data records in DynamoDB tables, meaning nearly one in three records was encrypted with a different data key.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;At enterprise SaaS scale, this compounding effect can generate millions of redundant AWS KMS &lt;code class="CodeInline" style="color: #000"&gt;GenerateDataKey&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;Decrypt&lt;/code&gt; calls per hour, even with the SDK’s built-in caching enabled. The following figure shows the pattern leading to a stampede.&lt;/p&gt; 
&lt;div id="attachment_43189" style="width: 1032px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43189" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/04/cache_stampede-Figure-1.png" alt="Figure 1: Cache stampede – multiple threads independently calling AWS KMS for the same encrypted data key, creating duplicate requests" width="1022" height="332" class="size-full wp-image-43189"&gt;
 &lt;p id="caption-attachment-43189" class="wp-caption-text"&gt;Figure 1: Cache stampede – multiple threads independently calling AWS KMS for the same encrypted data key, creating duplicate requests&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;The stampede follows this sequence on the encrypt side:&lt;/p&gt; 
&lt;ol id="rte-683592d1-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;Multiple threads call &lt;code class="CodeInline" style="color: #000"&gt;encrypt()&lt;/code&gt; for the same tenant concurrently.&lt;/li&gt; 
 &lt;li&gt;Each thread checks the CachingCryptoMaterialsManager and finds the cache entry expired.&lt;/li&gt; 
 &lt;li&gt;With no coordination mechanism, each thread independently calls &lt;code class="CodeInline" style="color: #000"&gt;GenerateDataKey&lt;/code&gt;.&lt;/li&gt; 
 &lt;li&gt;AWS KMS returns N distinct data keys (one per thread).&lt;/li&gt; 
 &lt;li&gt;Each data key produces a unique EDK, inflating cardinality across the system.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;On the decrypt side, the inflated EDK cardinality compounds the problem:&lt;/p&gt; 
&lt;ol id="rte-683592d2-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ol" start="6"&gt; 
 &lt;li&gt;Consumer threads encounter unique EDKs that were never cached.&lt;/li&gt; 
 &lt;li&gt;Multiple threads hitting the same EDK simultaneously each trigger a separate &lt;code class="CodeInline" style="color: #000"&gt;Decrypt&lt;/code&gt; call. AWS KMS returns the same plaintext data key N times, doing redundant work.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Two paths forward&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;We evaluated two approaches to solve the cache stampede problem. Each fits different architectural requirements and regulatory constraints.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Option A: Hierarchical keyring with DynamoDB (AWS-recommended)&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;AWS addresses the cache stampede challenge through the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/use-hierarchical-keyring.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;hierarchical keyring pattern&lt;/a&gt;&lt;/span&gt;, which introduces an additional level of key hierarchy that significantly reduces how often cache stampedes occur.&lt;/p&gt; 
&lt;p&gt;In this architecture, branch keys serve as intermediate wrapping keys stored in a DynamoDB table. This DynamoDB table acts as a shared cache layer that coordinates across all instances in your distributed fleet.&lt;/p&gt; 
&lt;div id="attachment_43190" style="width: 742px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43190" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/04/keyring-Figure-2.png" alt="Figure 2: Hierarchical keyring architecture – branch keys in DynamoDB coordinating across distributed instances" width="732" height="496" class="size-full wp-image-43190"&gt;
 &lt;p id="caption-attachment-43190" class="wp-caption-text"&gt;Figure 2: Hierarchical keyring architecture – branch keys in DynamoDB coordinating across distributed instances&lt;/p&gt;
&lt;/div&gt; 
&lt;p&gt;The architecture (shown in Figure 2) works as follows:&lt;/p&gt; 
&lt;ol id="rte-683592d3-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;The application requests encryption through the hierarchical keyring.&lt;/li&gt; 
 &lt;li&gt;The keyring checks the local cache for the tenant’s branch key.&lt;/li&gt; 
 &lt;li&gt;On a cache miss, it queries the DynamoDB Key Store table for the active branch key.&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;span class="Link"&gt;AWS KMS decrypts the branch key (this is the only KMS call in the flow).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;The decrypted branch key is returned to the keyring.&lt;/li&gt; 
 &lt;li&gt;The keyring stores the branch key in the local cache for subsequent requests.&lt;/li&gt; 
 &lt;li&gt;The keyring derives a unique wrapping key from the branch key and generates the data key locally.&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;The key insight is that the cache is thread-aware. When the cache expires, threads coordinate to make a single request to refresh the cache. Only a single thread is used to make a call to the branch key, rather than all the threads acting independently. Additionally, by adding an additional key into the key hierarchy, branch keys don’t live within AWS KMS. This means cache misses and the stampedes they trigger interact with the branch key, and don’t make as many calls to the AWS KMS service at the top of the hierarchy:&lt;/p&gt; 
&lt;ul id="rte-6835b9e0-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Without hierarchical keyrings: &lt;/b&gt;Your local cache needs to store all the data encryption keys, and has constant misses as new, unique data keys arrive with each encrypted message. A miss can trigger a stampede.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;With hierarchical keyrings: &lt;/b&gt;The same branch key wraps thousands or millions of data keys. A cache miss only occurs when a branch key expires or is first requested, which happens orders of magnitude less frequently than without hierarchical keyrings.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The DynamoDB table acts as a coordination point. The first thread to request a missing branch key retrieves it from AWS KMS and stores it in DynamoDB (the Key Store table). Subsequent requests from instances in the fleet retrieve the cached branch key from DynamoDB instead of making duplicate AWS KMS calls.&lt;/p&gt; 
&lt;p&gt;Beyond reducing cache miss frequency, the hierarchical keyring provides built-in stampede protection within its local cache implementation. The SDK offers multiple cache types, and the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/database-encryption-sdk/latest/devguide/use-hierarchical-keyring.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Default cache&lt;/a&gt;&lt;/span&gt;, designed for heavily multi-threaded environments, prevents multiple threads from calling AWS KMS on cache expiry by notifying a single thread that the branch key materials entry is about to expire 10 seconds in advance. That one thread refreshes the cache while all other threads continue serving requests using the still-valid entry.&lt;/p&gt; 
&lt;p&gt;This solution integrates with the AWS Encryption SDK and requires minimal code changes to existing applications. For event-driven architectures processing encrypted Kafka streams, this approach reduces KMS call volume by orders of magnitude while preserving per-tenant cryptographic isolation.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Option B: Custom KMS client caching – Solving the stampede at the API layer&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;While the hierarchical keyring (Option A) addresses the stampede by reducing how often cache misses occur, there’s a complementary approach: eliminating the stampede at its source by caching KMS API responses directly, using atomic, single-flight cache loading that prevents concurrent threads from issuing duplicate calls. This is the path NICE Actimize took.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;The IClientSupplier extension point in AWS Encryption SDK v3&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;In the AWS Encryption SDK v2, decorating the AWS KMS client on a per-request basis was possible through the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://github.com/aws/aws-encryption-sdk-java/blob/1870a082358d59e32c60d74116d6f43c0efa466b/src/main/java/com/amazonaws/encryptionsdk/kmssdkv2/RegionalClientSupplier.java" target="_blank" rel="noopener" data-cms-ai="0"&gt;RegionalClientSupplier&lt;/a&gt;&lt;/span&gt; interface, but it was an advanced and undocumented use case. Without explicit guidance or a supported pattern, caching strategies typically operated above the SDK layer, making it difficult to prevent duplicate KMS calls at their source. The AWS Encryption SDK v3 introduced the IClientSupplier interface, which the &lt;code class="CodeInline" style="color: #000"&gt;AwsKmsMrkMultiKeyring&lt;/code&gt; accepts at construction time. This interface is called by the SDK whenever it needs a KMS client for a given AWS Region, and you control what it returns, making it possible to insert a caching layer between the SDK and AWS KMS.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Architecture: A decorated KMS client with two Caffeine caches&lt;/b&gt;&lt;br&gt; The solution is a CachedKmsClient—a decorator that wraps the standard AWS SDK KmsClient and interposes two &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://github.com/ben-manes/caffeine" target="_blank" rel="noopener" data-cms-ai="0"&gt;Caffeine&lt;/a&gt;&lt;/span&gt; LoadingCache instances between the application and AWS KMS:&lt;/p&gt; 
&lt;table style="border-collapse: separate;text-indent: initial;border-spacing: 2px;border-color: gray;width: 100%" border="1px" cellpadding="10px"&gt; 
 &lt;tbody&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;&lt;b&gt;Cache&lt;/b&gt;&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;&lt;b&gt;Key&lt;/b&gt;&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;&lt;b&gt;Value&lt;/b&gt;&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;&lt;b&gt;Purpose&lt;/b&gt;&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;GenerateDataKey cache&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;GenerateDataKeyRequest (tenant KMS key ARN and key spec)&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;GenerateDataKeyResponse (EDK and plaintext data key)&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Ensures encrypt operations on the same node reuse the same data key for a given tenant KMS key during the cache window&lt;/td&gt; 
  &lt;/tr&gt; 
  &lt;tr&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Decrypt cache&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;DecryptRequest (EDK and key ARN)&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;DecryptResponse (plaintext data key)&lt;/td&gt; 
   &lt;td style="padding: 10px;border: 1px solid #dddddd"&gt;Ensures decrypt operations for the same EDK share a single KMS call result&lt;/td&gt; 
  &lt;/tr&gt; 
 &lt;/tbody&gt; 
&lt;/table&gt; 
&lt;p&gt;Both caches are configured with &lt;code class="CodeInline" style="color: #000"&gt;refreshAfterWrite&lt;/code&gt; (default: 1 hour, configurable), which means:&lt;/p&gt; 
&lt;ul id="rte-6835b9e1-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ul"&gt; 
 &lt;li&gt;During the refresh window, concurrent threads receive the cached response instantly resulting in zero KMS calls.&lt;/li&gt; 
 &lt;li&gt;When a cache entry expires, Caffeine’s &lt;code class="CodeInline" style="color: #000"&gt;LoadingCache.get()&lt;/code&gt; guarantees that exactly one thread executes the loader function (the actual KMS API call), while all other concurrent threads block and wait for that single result. This is the atomic, single-flight property that eliminates the stampede.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;&lt;b&gt;Security consideration: &lt;/b&gt;Caching plaintext data keys in memory means the keys exist in process memory for the duration of the cache TTL. The TTL acts as a security control: shorter TTLs reduce the window of exposure in the event of a memory dump, while longer TTLs reduce KMS call volume. Choose a TTL that balances your security requirements with your cost and performance goals. Key rotation at the KMS key level remains unaffected by the cache, because rotated keys produce new data keys on the next cache refresh.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Integration with the AWS Encryption SDK v3&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;The integration is minimal. The &lt;code class="CodeInline" style="color: #000"&gt;IClientSupplier&lt;/code&gt; &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/lambda" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Lambda&lt;/a&gt;&lt;/span&gt; function returns a &lt;code class="CodeInline" style="color: #000"&gt;CachedKmsClient&lt;/code&gt; singleton for each AWS Region, this singleton is passed into the &lt;code class="CodeInline" style="color: #000"&gt;AwsKmsMrkMultiKeyring&lt;/code&gt; at keyring construction time. From that point forward, each &lt;code class="CodeInline" style="color: #000"&gt;GenerateDataKey&lt;/code&gt; and &lt;code class="CodeInline" style="color: #000"&gt;Decrypt&lt;/code&gt; call the SDK makes flows through the caching decorator transparently, with no changes to the encrypt or decrypt call sites.&lt;/p&gt; 
&lt;p&gt;The CachedKmsClient is a singleton per Region (managed using a ConcurrentHashMap), so all tenants on the same node share the same caching layer but their data keys remain fully isolated because the cache keys include the tenant-specific AWS KMS key ARN.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Why Caffeine?&lt;/b&gt;&lt;/p&gt; 
&lt;p&gt;Caffeine is a high-performance, near-optimal Java caching library well-suited for this pattern for several reasons:&lt;/p&gt; 
&lt;ul id="rte-6835b9e2-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Atomic loading: &lt;/b&gt;&lt;code class="CodeInline" style="color: #000"&gt;LoadingCache.get()&lt;/code&gt; guarantees that on a cache miss, only one thread executes the loader while others wait. This is the core property that eliminates the stampede.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;refreshAfterWrite semantics: &lt;/b&gt;Unlike &lt;code class="CodeInline" style="color: #000"&gt;expireAfterWrite&lt;/code&gt; (which blocks all threads during refresh), refreshAfterWrite allows one thread to asynchronously reload the entry while other threads continue to serve the stale-but-valid cached value. This eliminates latency spikes during key rotation.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Observability: &lt;/b&gt;Cache eviction listeners and Micrometer metric counters can be wired in to track actual KMS call volume per tenant KMS key, enabling real-time cost monitoring.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Choosing between the two options&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;The hierarchical keyring with DynamoDB (Option A) is a production-ready, AWS-recommended solution that reduces stampede frequency by introducing longer-lived branch keys. It’s the best choice for most organizations. Particularly when starting fresh or when the operational overhead of an additional data store is acceptable.&lt;/p&gt; 
&lt;p&gt;NICE Actimize chose the custom caching approach (Option B) for a pragmatic reason: it avoided introducing a new infrastructure dependency into the encryption critical path. Their platform already operated at scale across hundreds of tenants, and adding a DynamoDB table as a key coordination layer would have meant taking on additional operational responsibility: provisioning, monitoring, backup, access control, and ensuring high availability for a component that sits directly in the encrypt/decrypt hot path. In a regulated financial services environment, each new stateful component in the security chain requires its own resilience planning, failure-mode analysis, and compliance review. The Caffeine cache used in Option B, by contrast, is an in-process library (a JAR on the classpath). It is stateless, requires no network calls, no provisioning and no operational overhead. It makes a lighter dependency than a managed cloud resource in the critical path. There is no shared state to lose, no additional infrastructure to protect, and no new failure mode beyond what already exists with AWS KMS itself. If a node restarts, the cache rebuilds on the next KMS call.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Results&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;By implementing a rotation policy with the optimized caching approach, NICE Actimize achieved the following results:&lt;/p&gt; 
&lt;ul id="rte-6835b9e3-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;77% reduction in AWS KMS costs – &lt;/b&gt;Eliminating millions of redundant API calls translated directly into significant cost savings.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Maintained strict per-tenant isolation – &lt;/b&gt;Per-tenant encryption isolation remained fully intact, with no compromise to their security posture.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Improved system performance – &lt;/b&gt;Removing the stampede of duplicate AWS KMS calls reduced latency and freed up system resources for core processing.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Simplified operations – &lt;/b&gt;A coordinated caching layer replaced fragmented, per-thread caching, reducing operational complexity.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Conclusion and next steps&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The cache stampede problem compounds in multi-tenant encryption systems: excess data key generation on the encrypt side degrades cache hit ratios on the decrypt side, creating a feedback loop of redundant KMS calls. The AWS-recommended hierarchical keyring pattern with DynamoDB provides a production-ready solution that integrates with the AWS Encryption SDK with minimal code changes. For regulated environments requiring additional control, a custom caching approach can deliver similar results.&lt;/p&gt; 
&lt;p&gt;If you operate a multi-tenant SaaS platform or a high-throughput system with per-tenant encryption requirements, consider these patterns to optimize your encryption costs and performance.&lt;/p&gt; 
&lt;p&gt;To get started, explore the following resources:&lt;/p&gt; 
&lt;ul id="rte-6835b9e4-70e1-11f1-86f3-75cb07b18e2e" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/introduction.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Encryption SDK Developer Guide&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/kms/latest/developerguide/overview.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS KMS Developer Guide&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon DynamoDB Developer Guide&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon MSK Developer Guide&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you have questions or feedback about this post, leave a comment in the &lt;strong&gt;Comments&lt;/strong&gt; section.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/07/13/Maria-Gutovsky.jpg" alt="Maria Gutovsky" width="120" height="160" class="aligncenter size-full wp-image-42933"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Maria Gutovsky&lt;/h3&gt; 
  &lt;p&gt;Maria is a Solutions Architect at AWS, based in Tel Aviv, Israel. She is part of the Database and Analytics Technical Field Community. In her free time, you will probably find her building a new character for a Dungeons and Dragons campaign. &lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/07/13/Hemmy-Yona.jpg" alt="Hemmy Yona" width="120" height="160" class="aligncenter size-full wp-image-42931"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Hemmy Yona&lt;/h3&gt; 
  &lt;p&gt;Hemmy is a Solutions Architect at AWS, based in Israel. With 20 years of experience in software development and group management, Hemmy is passionate about helping customers build innovative, scalable, and cost-effective solutions. Outside of work, you’ll find Hemmy enjoying sports and traveling with family. &lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;p&gt;&lt;span class="lb-h4"&gt;Contributor&lt;/span&gt;&lt;/p&gt; 
  &lt;p&gt;Special thanks to Devora Roth Goldshmidt, Head of X-Sight Architects at NICE Actimize, who made a significant contribution to this post.&lt;/p&gt; 
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>AWS partners with Anthropic and OpenAI to bring AWS Continuum into developer workflows</title>
		<link>https://aws.amazon.com/blogs/security/aws-partners-with-anthropic-and-openai-to-bring-aws-continuum-into-developer-workflows/</link>
					
		
		<dc:creator><![CDATA[Chet Kapoor]]></dc:creator>
		<pubDate>Wed, 05 Aug 2026 21:00:11 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Generative AI]]></category>
		<category><![CDATA[Kiro]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[artificial intelligence]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[threat detection and incident response]]></category>
		<guid isPermaLink="false">e2a1e8bbdc342d194092a8fd0649fadff128e78a</guid>

					<description>Customers have access to models that are continuously getting better with each new generation bringing larger context windows, stronger reasoning, and lower token costs. Getting the strongest AI-powered security will come from tools that combine the most relevant models with deep knowledge of a customer’s specific environment. AWS Continuum for code vulnerabilities (Preview) is built […]</description>
										<content:encoded>&lt;p&gt;Customers have access to models that are continuously getting better with each new generation bringing larger context windows, stronger reasoning, and lower token costs. Getting the strongest AI-powered security will come from tools that combine the most relevant models with deep knowledge of a customer’s specific environment.&lt;/p&gt; 
&lt;p&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/continuum/" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;u&gt;AWS Continuum for code vulnerabilities (Preview)&lt;/u&gt;&lt;/a&gt;&lt;/span&gt; is built to be that tool to help secure your code at machine speed. Today, we’re announcing our work with Anthropic and OpenAI that extends AWS Continuum directly into the developer workflows where code is being written: Anthropic Claude Code, OpenAI Codex, and Kiro. Developers can use these integrations to discover vulnerabilities, contextually prioritize, validate, and remediate, within their existing workflows.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Models are getting smarter&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;AI models are advancing rapidly. Each generation brings new capabilities, and different models excel at different tasks. The latest frontier models can now identify vulnerabilities and reason through multi-step attack paths that would take a human security team weeks to trace manually.&lt;/p&gt; 
&lt;p&gt;This is a genuine breakthrough in detection, but it creates a new challenge for your security teams: more findings, more complexity, and the need to determine which ones matter most in your environment and how to address them. The next challenge customers face is building the correct harness and orchestration to turn these models into a single interface that goes from detection through remediation. This is what we set out to do when creating Continuum, which brings together many different models and uses the model that’s most effective for each part of the process.&lt;/p&gt; 
&lt;p&gt;We also partner with the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://www.frontiermodelforum.org/" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;u&gt;Frontier Model Forum&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;, an industry consortium developing shared safety standards, evaluation methods, and benchmarking to ensure we can evaluate these models effectively together. We’re also working with model providers on shared security performance benchmarking to make sure we’re using the best model for each task within Continuum and our other AWS security products.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;&lt;b&gt;The harness&lt;/b&gt;&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;An AI harness is the orchestration layer that wraps around a model to connect it to tools, guardrails, memory, and workflows, so it delivers outcomes. Think of the model as the engine and the harness as everything around it. You need both to have a high-performance car.&lt;/p&gt; 
&lt;p&gt;Harnesses are becoming increasingly complex. Teams are stitching together multiple models, agents that call agents, and dynamic workflows, and are dealing with constant change driven by innovations in models, agent frameworks, and tool integrations.&lt;/p&gt; 
&lt;p&gt;As a result of that complexity, customers are implementing shadow infrastructure to manage integration layers across models and tools. Every time the landscape shifts, security and governance controls potentially break, forcing teams to go back to revisit them and make updates.&lt;/p&gt; 
&lt;p&gt;These challenges extend beyond the model. They arise in the orchestration required to connect different models and developer environments with tools, context, controls, and workflows across a customer’s environment. At AWS, we see managing that complexity as heavy lifting that AWS should solve. We treat the harness as infrastructure and with the same rigor we apply to identity, discovery, policy enforcement, observability, and compliance of the core infrastructure at AWS.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Enter Continuum&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;AWS Continuum for code vulnerabilities discovers vulnerabilities, prioritizes them within the context of a customer’s business, validates them in a sandbox, and provides remediation at machine speed. Under the hood, Continuum is an agent-team loop architecture. A sophisticated harness that orchestrates all of it: selecting the right model, connecting to a customer environment, and delivering secure code that’s been validated in context. You never need to think about how the orchestration works, or what changed in the latest release.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Anthropic and OpenAI collaborations&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;We are working with Anthropic and OpenAI to bring Continuum into the developer workflows where code is being written.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;&lt;b&gt;How it will work:&lt;/b&gt;&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Within Claude Code, Codex, and Kiro coding environments, on-demand vulnerability scans identify potential issues and send findings to Continuum. Continuum prioritizes them within the context of the customer’s AWS environment (configurations, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management (IAM)&lt;/a&gt;&lt;/span&gt; policies, network topology, and exposure surfaces) and validates them in a sandbox. It then returns prioritized, contextual intelligence back to the coding assistant, which adjusts its recommendations accordingly.&lt;/p&gt; 
&lt;p&gt;This collapses what was traditionally a multi-step, multi-team process (write, scan, triage, prioritize, fix, rescan) into a single outcome: the code suggestion itself. Two modes, one outcome:&lt;/p&gt; 
&lt;ul id="rte-db7a24e1-904e-11f1-b8df-c1dd8f09b652" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;For existing code:&lt;/b&gt; Use Continuum for code vulnerabilities from AWS to discover, prioritize, validate, and remediate across your environment.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;For greenfield code:&lt;/b&gt; Use the Continuum plugin within Codex, Claude Code, or Kiro to get security-validated suggestions in your development environment.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Early design partners are already seeing results.&lt;/p&gt; 
&lt;blockquote style="background-color: #f0f0f0;padding: 15px 0 15px 20px"&gt;
 &lt;p&gt;“AWS Continuum connects source code with enterprise knowledge, allowing teams to accurately pinpoint security vulnerabilities and verify that flagged issues are truly meaningful. This shortens what really matters: timeline to fix serious vulnerabilities.” &lt;em&gt; – Mike Johnson, CISO, Rivian&lt;/em&gt; &lt;/p&gt;
&lt;/blockquote&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;Next&lt;/h3&gt; 
&lt;/div&gt; 
&lt;ul id="rte-db7a4bf0-904e-11f1-b8df-c1dd8f09b652" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;AWS Continuum for code vulnerabilities&lt;/b&gt; is available in preview through AWS. Sign up to request access at &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://pages.awscloud.com/global-ln-gc-aws-continuum-interest.html?trk=274c9c25-85f4-42e0-953e-347c044a17bc&amp;amp;sc_channel=el" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Continuum&lt;/a&gt;&lt;/span&gt;.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Continuum integrated into Claude Code, Codex, and Kiro workflows &lt;/b&gt;are coming soon.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/06/16/Chet-Kapoor-headshot.jpg" alt="Chet Kapoor" width="120" height="160" class="aligncenter size-full wp-image-42623"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Chet Kapoor&lt;/h3&gt; 
  &lt;p&gt;Chet is Vice President of Search, Security, and Observability at Amazon Web Services. With more than two decades in enterprise technology, he has led companies through some of the industry’s most consequential platform shifts — from APIs and open source to cloud and AI — building and scaling businesses through periods of rapid growth, transformation, acquisition, and IPO. He brings a builder’s mindset, deep operational experience, and a strong customer orientation to helping organizations adopt emerging technologies securely and at scale.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>From 2 weeks to 2 minutes: Amazon Cognito launches Provisioned limits for self-service rate limit management</title>
		<link>https://aws.amazon.com/blogs/security/from-2-weeks-to-2-minutes-amazon-cognito-launches-provisioned-limits-for-self-service-rate-limit-management/</link>
					
		
		<dc:creator><![CDATA[Kiran Dongara]]></dc:creator>
		<pubDate>Wed, 05 Aug 2026 17:17:47 +0000</pubDate>
				<category><![CDATA[Amazon Cognito]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">0c715902559998e647956c0fca39611ccdd028b5</guid>

					<description>Imagine preparing for your biggest sales event of the year, and you want to ensure your customer identity management service can handle the elevated traffic for carrying out application activities. For security teams, business leaders, and technologists managing identity infrastructure at scale, this scenario has been all too familiar. Whether you’re a CISO evaluating security […]</description>
										<content:encoded>&lt;p&gt;Imagine preparing for your biggest sales event of the year, and you want to ensure your customer identity management service can handle the elevated traffic for carrying out application activities. For security teams, business leaders, and technologists managing identity infrastructure at scale, this scenario has been all too familiar. Whether you’re a CISO evaluating security controls, a CFO managing cloud costs, traditional support ticket processes for adjusting &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cognito" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Cognito&lt;/a&gt;&lt;/span&gt; rate limits meant waiting 10–14 days for capacity increases, requiring teams to plan weeks in advance or rush to escalate.&lt;/p&gt; 
&lt;p&gt;Today, we’re announcing provisioned limits for Amazon Cognito, a capability that transforms how you manage authentication rate limits. This introduces a feature in the AWS Management Console for Amazon Cognito for on-demand capacity adjustments, working alongside the existing account-level maximum limits in &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://us-east-1.console.aws.amazon.com/servicequotas/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Service Quotas&lt;/a&gt;&lt;/span&gt;. Together, they give you self-service control over your authentication infrastructure so you can scale up for Black Friday (or similar sales events), scale down after tax season, and optimize costs with unprecedented precision. What once took up to 2 weeks now happens in minutes.&lt;/p&gt; 
&lt;p&gt;In this post, you’ll learn how provisioned limits work, the relationship between account-level maximums and provisioned capacity, the cost implications and optimization strategies, and step-by-step implementation guidance. This capability fundamentally changes how you approach authentication capacity planning.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Manual processes that can’t keep pace&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Identity management services open the front door to your application. When users can’t sign in, everything else stops. Amazon Cognito offers extremely flexible limit management: customers can request adjustments as granular as 1 request per second (RPS) for as short as 1 day. As customer demand for faster, self-service adjustments grew, we identified opportunities to address the following challenges:&lt;/p&gt; 
&lt;ul id="rte-285e9610-7ed4-11f1-8f52-f142da6b37c4" class="rte2-style-ul" style="margin: 4px 0 4px 24px;padding: 0"&gt; 
 &lt;li&gt;&lt;b&gt;Support tickets required&lt;/b&gt; for each rate limit change&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;10–14 day approval timelines&lt;/b&gt; for standard review and processing&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Advance planning needed&lt;/b&gt; weeks ahead of anticipated traffic spikes&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;For businesses with seasonal traffic, like tax preparation services that see 90% of annual authentication volume in March and April, or ecommerce platforms preparing for Black Friday, these factors meant teams had to plan capacity decisions well in advance with limited ability to adjust in the moment.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Provisioned limits and account-level max limits&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;Starting July 6, 2026, Amazon Cognito introduced provisioned limits in the Amazon Cognito console. At the account level (per AWS Region, per account), you’ll find a &lt;b&gt;Provisioned limits&lt;/b&gt; tab next to the &lt;b&gt;User Pools&lt;/b&gt; tab. This gives you direct control over your authentication rate limits through two complementary mechanisms:&lt;/p&gt; 
&lt;ul id="rte-dbd5e070-815b-11f1-a79d-193f8958af3a" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Provisioned limits (Amazon Cognito console)&lt;/b&gt; – Adjust your provisioned capacity up or down on-demand. Changes take effect immediately. You’re billed for the capacity you provision above the default limit, regardless of how much you use.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Account-level max limit (Service Quotas console) &lt;/b&gt;– Set your account’s ceiling, the maximum RPS your account is allowed to provision. Raising this ceiling doesn’t incur additional charges. Approximately 90% of requests are automatically approved within minutes. For larger limit increases (depending on the API category and Region), manual approval through AWS Support might still be required.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;The following experience shows the end-to-end workflow of adjusting your provisioned limits and requesting a higher account-level max.&lt;/p&gt; 
&lt;div id="attachment_43172" style="width: 1546px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43172" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/04/Cognito-Provisionedlimits-1-2.gif" alt="Figure 1: Provisioned limit experience workflow" width="1536" height="864" class="size-full wp-image-43172" style="border: 1px solid #bebebe"&gt;
 &lt;p id="caption-attachment-43172" class="wp-caption-text"&gt;Figure 1: Provisioned limit experience workflow&lt;/p&gt;
&lt;/div&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;&lt;b&gt;How they work together&lt;/b&gt;&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;Let’s use the &lt;code class="CodeInline" style="color: #000"&gt;UserCreation&lt;/code&gt; API as an example. The default limit is 50 RPS, and initially the provisioned limit is also 50 RPS—meaning billed capacity is 0 (no additional charge). The applied account-level max limit is also 50 RPS. So you have three values: default (50), provisioned limit (50), and account-level max (50).&lt;/p&gt; 
&lt;ol&gt; 
 &lt;li&gt;Start by going to the Amazon Cognito console and choosing &lt;b&gt;User pools&lt;/b&gt; from the navigation pane. &lt;p&gt;&lt;/p&gt;
  &lt;div id="attachment_43157" style="width: 3022px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43157" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Provisioned-limits-Figure-2.png" alt="Figure 2: UserCreation with default values" width="3012" height="982" class="size-full wp-image-43157" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43157" class="wp-caption-text"&gt;Figure 2: UserCreation with default values&lt;/p&gt;
  &lt;/div&gt;&lt;/li&gt; 
 &lt;li&gt; Choose &lt;b&gt;Edit provisioned limit&lt;/b&gt;, to go to the &lt;b&gt;Edit provisioned limit&lt;/b&gt; page with an input field for &lt;b&gt;New provisioned limit&lt;/b&gt;. However, because the account-level max limit is 50 RPS, you can’t set the provisioned limit above 50. For example, if you want to provision 55 RPS, the console won’t allow it because 55 exceeds the current account max of 50. &lt;p&gt;&lt;/p&gt;
  &lt;div id="attachment_43158" style="width: 1342px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43158" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Provisioned-limits-Figure-3.png" alt="Figure 3: Editing the provisioned limit constraint constraint to more than the account-level max" width="1332" height="414" class="size-full wp-image-43158" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43158" class="wp-caption-text"&gt;Figure 3: Editing the provisioned limit constraint constraint to more than the account-level max&lt;/p&gt;
  &lt;/div&gt;&lt;/li&gt; 
 &lt;li&gt;To set a higher limit, choose &lt;b&gt;Request an increase&lt;/b&gt;. This takes you to the Service Quotas console, where you can choose &lt;b&gt;Request increase at account level&lt;/b&gt; to request a higher account-level max, for example, 55 RPS. Most requests are automatically approved within minutes. At any time, you can check the status of the request using the &lt;b&gt;Request history&lt;/b&gt; tab. &lt;p&gt;&lt;/p&gt;
  &lt;div id="attachment_43159" style="width: 1392px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43159" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Provisioned-limits-Figure-4.png" alt="Figure 4: Service Quotas page where the account-level max increase is requested and auto-approved" width="1382" height="1114" class="size-full wp-image-43159" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43159" class="wp-caption-text"&gt;Figure 4: Service Quotas page where the account-level max increase is requested and auto-approved&lt;/p&gt;
  &lt;/div&gt;&lt;/li&gt; 
 &lt;li&gt;After receiving approval, return to the Amazon Cognito console to edit your provisioned limit up to 55 RPS. Your billed capacity becomes 5 RPS (55 minus the 50 default). &lt;p&gt;&lt;/p&gt;
  &lt;div id="attachment_43160" style="width: 2400px" class="wp-caption aligncenter"&gt;
   &lt;img aria-describedby="caption-attachment-43160" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Provisioned-limits-Figure-5.png" alt="Figure 5: Provisioned after increasing the provisioned limit to 55 RPS, with billed capacity of 5 RPS." width="2390" height="1044" class="size-full wp-image-43160" style="border: 1px solid #bebebe"&gt;
   &lt;p id="caption-attachment-43160" class="wp-caption-text"&gt;Figure 5: Provisioned after increasing the provisioned limit to 55 RPS, with billed capacity of 5 RPS.&lt;/p&gt;
  &lt;/div&gt; &lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;This two-part model gives you precise control over both cost and capacity. Raising the account-level max in Service Quotas doesn’t incur additional charges—it only sets your ceiling. You are billed for what you provision in the Amazon Cognito console above the default, so you benefit from right-sizing your provisioned capacity to match expected demand. Raise your account max ahead of time to prepare for future scaling needs without incurring any cost. When the time comes, increase your provisioned limit to what you need, and scale back down after the event. You stop being charged for the extra capacity as soon as you reduce the provisioned limit. This applies equally to seasonal spikes, planned load tests, or unexpected viral growth—all self-service, all within minutes.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;How the provisioned limits experience works&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;The provisioned limits experience introduces three key concepts that work together:&lt;/p&gt; 
&lt;ul id="rte-dbd60780-815b-11f1-a79d-193f8958af3a" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Default limit &lt;/b&gt;– The baseline rate included at no additional cost (for example, 50 RPS for &lt;code class="CodeInline" style="color: #000"&gt;UserCreation&lt;/code&gt;).&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Provisioned limit&lt;/b&gt; – The capacity you actively request and reserve in the Amazon Cognito console. Because this capacity is reserved specifically for your account, it’s the chargeable dimension. You’re billed for any provisioned capacity above the default, regardless of how much you consume. For example, if the default is 50 RPS and you provision 80 RPS, you’re billed for 30 RPS even if your actual usage is only 60 RPS. If your provisioned capacity is 50 RPS (the default), your billed capacity is 0.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Applied account-level max limit&lt;/b&gt; – The ceiling managed through Service Quotas. This determines how high you can set your provisioned limit. Raising this ceiling doesn’t incur charges, it only unlocks the ability to provision higher capacity. Importantly, the &lt;b&gt;Provisioned limits&lt;/b&gt; page displays each API category with its adjustability status. For example, &lt;b&gt;UserCreation&lt;/b&gt; is marked &lt;b&gt;Adjustable&lt;/b&gt; (shown earlier in Figure 5) and can be modified. However, &lt;b&gt;UserList&lt;/b&gt; is marked &lt;b&gt;Not adjustable&lt;/b&gt;, meaning the account-level max limit can’t be adjusted for that category. You can still see its default and provisioned limit on the page, but you can’t modify them. For &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cognito/latest/developerguide/quotas.html#category_operations" target="_blank" rel="noopener" data-cms-ai="0"&gt;adjustable categories&lt;/a&gt;&lt;/span&gt;, you will see the default limit, current provisioned limit, and billed capacity at a glance.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;div id="attachment_43161" style="width: 2940px" class="wp-caption aligncenter"&gt;
 &lt;img aria-describedby="caption-attachment-43161" loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Provisioned-limits-Figure-6.png" alt="Figure 6: Provisioned limits overview with non-adjustable API categories." width="2930" height="1046" class="size-full wp-image-43161" style="border: 1px solid #bebebe"&gt;
 &lt;p id="caption-attachment-43161" class="wp-caption-text"&gt;Figure 6: Provisioned limits overview with non-adjustable API categories.&lt;/p&gt;
&lt;/div&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;&lt;b&gt;Multi-tenant SaaS considerations&lt;/b&gt;&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;For software as a service (SaaS) providers managing multiple tenants with varying throughput requirements, the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-provisioned-limit.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;UpdateProvisionedLimit&lt;/a&gt;&lt;/span&gt; API enables programmatic management of provisioned capacity. Teams using dedicated user pools per tenant, for example, can integrate this into their infrastructure-as-code pipelines to adjust provisioned limits per tenant tier. With provisioned limits, SaaS vendors can tier their capacity management per tenant, for example, provisioning higher capacity for enterprise-tier tenants and lower capacity for free-tier tenants, and adjust each tenant’s provisioned capacity independently through the API based on their service tier and demand patterns.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h2&gt;Conclusion&lt;/h2&gt; 
&lt;/div&gt; 
&lt;p&gt;With provisioned limits, whether you’re preparing for peak shopping season, tax filing deadlines, or any other scaling event, you can now adjust provisioned limits to respond to your organization’s needs on demand. The separation between the account-level max (in Service Quotas) and the provisioned limit (in the Amazon Cognito console) gives you full control to plan ahead, respond to demand changes in minutes, and optimize costs on your own terms.&lt;/p&gt; 
&lt;div class="RichTextHeading"&gt; 
 &lt;h3&gt;&lt;b&gt;Get started&lt;/b&gt;&lt;/h3&gt; 
&lt;/div&gt; 
&lt;p&gt;The provisioned limits experience for Amazon Cognito user pools launched on July 6, 2026, and is available across all AWS Regions where Amazon Cognito is supported. To get started:&lt;/p&gt; 
&lt;ol id="rte-a6016f20-7bcd-11f1-aeaf-9b3421d52d60" class="rte2-style-ol" start="1"&gt; 
 &lt;li&gt;Review your current authentication traffic patterns using &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cloudwatch" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon CloudWatch&lt;/a&gt;&lt;/span&gt; metrics to understand your baseline&lt;/li&gt; 
 &lt;li&gt;Set up CloudWatch alarms at 70% and 85% of your current rate limits&lt;/li&gt; 
 &lt;li&gt;Ensure your team has appropriate &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/iam" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Identity and Access Management ( IAM)&lt;/a&gt;&lt;/span&gt; permissions for both Service Quotas and the Provisioned limits tab in the Amazon Cognito console&lt;/li&gt; 
 &lt;li&gt;Raise your account-level max in Service Quotas based on your demand expectations&lt;/li&gt; 
 &lt;li&gt;Use the Amazon Cognito console Provisioned limits tab to adjust capacity up or down as needed&lt;/li&gt; 
&lt;/ol&gt; 
&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt; 
&lt;ul id="rte-a6016f21-7bcd-11f1-aeaf-9b3421d52d60" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Quotas in Amazon Cognito – User pool quotas&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://console.aws.amazon.com/servicequotas/home/services/cognito-idp/quotas" target="_blank" rel="noopener" data-cms-ai="0"&gt;Service Quotas console – Amazon Cognito&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://docs.aws.amazon.com/cognito/latest/developerguide/monitoring.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Logging and Monitoring in Amazon Cognito&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/cognito/pricing/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Cognito pricing&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Need help? Contact your AWS account team or visit &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/support/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Support&lt;/a&gt;&lt;/span&gt; for assistance with planning your rate limit strategy.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below. &lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/08/03/Kiran-Dongara-Author.jpg" alt="" width="120" height="160" class="aligncenter size-full wp-image-40104"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Kiran Dongara&lt;/h3&gt; 
  &lt;p&gt;Kiran is an Enterprise Solutions Architect at AWS, primarily supporting Retail, Restaurant, and CPG customers. His primary focus is application identity within the IAM domain. His expertise includes deep technical understanding across technical and industry domains, which he integrates to design scalable and efficient architectures using best practices. When not working, Kiran prioritizes family time, nature walks, and cycling. &lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/05/18/Howie-Li.jpg" alt="Howie Li" width="120" height="160" class="aligncenter size-full wp-image-42275"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Howie Li&lt;/h3&gt; 
  &lt;p&gt;Howie Li is a Product Manager at Amazon Web Services, where he strives to make authentication straightforward by default. Outside of work, Howie enjoys exploring cultures and food through travels and making new ice cream flavors inspired by them.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>Spring 2026 PCI DSS and PCI 3DS compliance packages for AWS now available</title>
		<link>https://aws.amazon.com/blogs/security/spring-2026-pci-dss-and-pci-3ds-compliance-packages-for-aws-now-available/</link>
					
		
		<dc:creator><![CDATA[Will Black]]></dc:creator>
		<pubDate>Tue, 04 Aug 2026 17:22:28 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[Compliance reports]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[PCI DSS]]></category>
		<category><![CDATA[Security Blog]]></category>
		<guid isPermaLink="false">75434a3b85a1ad04d263c3cbd94ea940b3182454</guid>

					<description>Amazon Web Services (AWS) is pleased to announce the successful completion of our Payment Card Industry (PCI) Data Security Standard (DSS) and Three Domain Secure (3DS) certifications. As part of this renewal, we have expanded the scope to include three additional AWS services and one additional AWS Region: Newly added AWS services: Amazon Bedrock AgentCore […]</description>
										<content:encoded>&lt;p&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Web Services (AWS)&lt;/a&gt;&lt;/span&gt; is pleased to announce the successful completion of our Payment Card Industry (PCI) Data Security Standard (DSS) and Three Domain Secure (3DS) certifications. As part of this renewal, we have expanded the scope to include three additional AWS services and one additional AWS Region:&lt;/p&gt; 
&lt;p&gt;Newly added AWS services:&lt;/p&gt; 
&lt;ul id="rte-30f9d801-86ec-11f1-8335-0978934d5d4f" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/bedrock/agentcore/" target="_blank" rel="noopener" data-cms-ai="0"&gt;Amazon Bedrock AgentCore&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/pcs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Parallel Computing Service&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://skillbuilder.aws/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Skill Builder&lt;/a&gt;&lt;/span&gt;&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;Newly added AWS Region:&lt;/p&gt; 
&lt;ul id="rte-17e0fa62-86ec-11f1-8335-0978934d5d4f" class="rte2-style-ul"&gt; 
 &lt;li&gt;Asia Pacific – New Zealand&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This certification means that customers can use these services while maintaining PCI DSS and PCI 3DS compliance, enabling innovation without compromising security. The full list of services can be found on the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/services-in-scope/PCI/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Services in Scope by Compliance Program page&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;The PCI DSS and PCI 3DS compliance packages include two key components for each certification:&lt;/p&gt; 
&lt;ul id="rte-30f9d806-86ec-11f1-8335-0978934d5d4f" class="rte2-style-ul"&gt; 
 &lt;li&gt;&lt;b&gt;Attestation of Compliance (AOC)&lt;/b&gt; – demonstrates that AWS was successfully validated against the PCI DSS and PCI 3DS standards.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;AWS Responsibility Summary&lt;/b&gt; – provides guidance to help AWS customers understand their responsibility in developing and operating a highly secure environment on AWS for handling payment card data.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;AWS was evaluated by Coalfire, a third-party Qualified Security Assessor (QSA).&lt;/p&gt; 
&lt;p&gt;This refreshed certification offers customers greater flexibility in deploying regulated workloads while reducing compliance overhead. Customers can access the PCI DSS and PCI 3DS report packages through &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://console.aws.amazon.com/artifact/home" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Artifact&lt;/a&gt;&lt;/span&gt;. This self-service portal provides on-demand access to AWS compliance reports, streamlining audit processes.&lt;/p&gt; 
&lt;p&gt;To learn more about our PCI programs and other compliance and security programs, see the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/compliance/programs/" target="_blank" rel="noopener" data-cms-ai="0"&gt;AWS Compliance Programs page&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;As always, we value your feedback and questions; reach out to the AWS Compliance team through the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://pages.awscloud.com/compliance-contact-us.html" target="_blank" rel="noopener" data-cms-ai="0"&gt;Compliance Support page&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below. If you have questions about this post, &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://console.aws.amazon.com/support/home" target="_blank" rel="noopener" data-cms-ai="0"&gt;contact AWS Support&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2025/07/03/Will-Black.jpeg" alt="Will Black" width="120" height="160" class="aligncenter size-full wp-image-39142"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Will Black&lt;/h3&gt; 
  &lt;p&gt;Will is a Compliance Program Manager at AWS where he leads multiple security and compliance initiatives. Will has 10 years of experience in compliance and security assurance and holds a degree in Management Information Systems from Temple University. Additionally, he is a PCI Internal Security Assessor (ISA) for AWS and holds the CCSK and ISO 27001 Lead Implementer certifications.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
		<item>
		<title>HIPAA Security Rule on AWS – Technical Safeguards Implementation and Readiness Guidance</title>
		<link>https://aws.amazon.com/blogs/security/hipaa-security-rule-on-aws-technical-safeguards-implementation-and-readiness-guidance/</link>
					
		
		<dc:creator><![CDATA[Abdul Javid]]></dc:creator>
		<pubDate>Fri, 31 Jul 2026 19:44:25 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Healthcare]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Security, Identity, & Compliance]]></category>
		<category><![CDATA[AWS Compliance]]></category>
		<category><![CDATA[HIPAA]]></category>
		<category><![CDATA[HIPAA Eligible Services]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Whitepaper]]></category>
		<guid isPermaLink="false">04f386cbe6d21ff20565be667836be428046234c</guid>

					<description>Today, we’re releasing the HIPAA Security Rule on AWS: Technical Safeguards Implementation and Readiness Guidance. This helps covered entities and business associates configure, implement, and evidence compliance with the HIPAA Security Rule Technical Safeguard requirements (45 CFR §164.312) when building healthcare workloads on AWS. The HIPAA Security Rule’s Technical Safeguards (§164.312) define five standards and […]</description>
										<content:encoded>&lt;p&gt;Today, we’re releasing the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://d1.awsstatic.com/onedam/marketing-channels/website/aws/en_US/whitepapers/compliance/HIPAA-Security-Rule-Technical-Controls-On-AWS-Compliance-Guidance.pdf" target="_blank" rel="noopener" data-cms-ai="0"&gt;HIPAA Security Rule on AWS: Technical Safeguards Implementation and Readiness Guidance&lt;/a&gt;&lt;/span&gt;. This helps covered entities and business associates configure, implement, and evidence compliance with the HIPAA Security Rule Technical Safeguard requirements (45 CFR §164.312) when building healthcare workloads on AWS.&lt;/p&gt; 
&lt;p&gt;The HIPAA Security Rule’s Technical Safeguards (§164.312) define five standards and nine implementation specifications covering access control, audit controls, integrity, authentication, and transmission security.&lt;/p&gt; 
&lt;p&gt;The guidance also covers the 2025 NPRM proposed changes,&lt;b&gt; &lt;/b&gt;including encryption at rest and in transit becoming required, multi-factor authentication (MFA) becoming mandatory for all electronic Personal Health Information (ePHI) access, and new specifications for network segmentation, configuration management, anti-malware protection, patch management, software removal, incident response and breach notification.&lt;/p&gt; 
&lt;p&gt;&lt;b&gt;Key topics included&lt;/b&gt;&lt;/p&gt; 
&lt;ul class="rte2-style-ul" id="rte-5ae8ab72-846f-11f1-805f-91786d649847"&gt; 
 &lt;li&gt;&lt;b&gt;Shared responsibility for HIPAA on AWS &lt;/b&gt;– A responsibility matrix mapping each §164.312 specification to what AWS manages nd what the customer must configure and operate.&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;ePHI boundary architecture &lt;/b&gt;– Guidance on establishing a defined ePHI boundary&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;ePHI data flow and encryption &lt;/b&gt;– A reference architecture tracing ePHI with the applicable §164.312 specification&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;Foundation checklist – &lt;/b&gt;Prerequisite recommendation before configuring individual Technical Safeguard controls.&lt;/li&gt; 
&lt;/ul&gt; 
&lt;p&gt;This guidance is written for cloud architects, security engineers, CISOs, and compliance teams at covered entities and business associates building or operating AWS healthcare workloads. It assumes familiarity with AWS services and is intended as a practical implementation reference, &lt;i&gt;not a legal or regulatory interpretation&lt;/i&gt;. This guidance focuses exclusively on Technical Safeguards.&lt;/p&gt; 
&lt;p&gt;HHS published a &lt;i&gt;Notice of Proposed Rulemaking&lt;/i&gt;&lt;b&gt; &lt;/b&gt;in January 2025, proposing significant updates to the HIPAA Security Rule—including eliminating the Addressable designation, making encryption, MFA, and asset inventory mandatory, and introducing new technical requirements not present in the current rule. As of June 2026, the final rule has not been published. This guidance covers both the current rule and the proposed changes and recommends treating all specifications as Required for new workloads.&lt;/p&gt; 
&lt;p&gt;Download &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://d1.awsstatic.com/onedam/marketing-channels/website/aws/en_US/whitepapers/compliance/HIPAA-Security-Rule-Technical-Controls-On-AWS-Compliance-Guidance.pdf" target="_blank" rel="noopener" data-cms-ai="0"&gt;HIPAA Security Rule on AWS: Technical Safeguards Implementation and Readiness Guidance&lt;/a&gt;&lt;/span&gt;.&lt;/p&gt; 
&lt;p&gt;For questions about HIPAA readiness on AWS, including Administrative Safeguards, Physical Safeguards, risk analysis, and assessment preparation, contact the &lt;span class="LinkEnhancement"&gt;&lt;a class="Link" href="https://aws.amazon.com/security-assurance-services/" target="_blank" rel="noopener" data-cms-ai="0"&gt;&lt;u&gt;AWS Security Assurance Services team&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;u&gt; &lt;/u&gt;or your AWS account representative.&lt;/p&gt; 
&lt;p&gt;&lt;i&gt;This guidance is provided by AWS Security Assurance Services, LLC, a HITRUST External Assessor Firm and PCI-QSAC along with contribution from AWS HCLS, AWS Compliance teams. It is for informational and guidance purposes only and does not constitute legal, regulatory, or compliance advice. Recipients are solely responsible for determining applicability to their specific environments and legal obligations.&lt;/i&gt;&lt;/p&gt; 
&lt;p&gt;If you have feedback about this post, submit comments in the &lt;strong&gt;Comments&lt;/strong&gt; section below.&lt;/p&gt; 
&lt;hr&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2024/11/14/abdul-javid.png" alt="Abdul Javid" width="120" height="160" class="aligncenter size-full wp-image-31628"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Abdul Javid&lt;/h3&gt; 
  &lt;p&gt;Abdul is a Senior Security Assurance Consultant at AWS Security Assurance Services. He holds HITRUST certifications and has led HITRUST r2 and i1 engagements across multiple healthcare technology companies. Abdul holds multiple security and auditing certifications and supports customers building responsible AI governance programs on AWS. He has over 25 years of experience and holds certifications across AWS, CMMC, PCI DSS, PMI, ISC2, and ISACA.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/07/31/Shreya-Singh-1.jpg" alt="Shreya Singh" width="120" height="160" class="aligncenter size-full wp-image-43128"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Shreya Singh&lt;/h3&gt; 
  &lt;p&gt;Shreya is a Security Assurance Consultant at AWS with more than eight years of experience in governance, risk, compliance, and cloud security. She holds the CISA and HITRUST Certified CSF Practitioner (CCSFP) certifications and supports healthcare and technology organizations with HITRUST, HIPAA, SOC 2, risk management, and audit readiness initiatives.She holds a Master of Engineering in Cybersecurity from the University of Maryland, College Park. &lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/07/31/kapil-temghare.png" alt="Kapil Temghare" width="120" height="160" class="aligncenter size-full wp-image-43129"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Kapil Temghare&lt;/h3&gt; 
  &lt;p&gt;Kapil is a Security Industry Specialist at AWS with over 10 years of experience spanning compliance, cloud security, and regulatory operations. He manages HIPAA compliance within the Regulatory Operations Center (ROC), including service eligibility assessments, controls validation, and compliance sign-off. Beyond healthcare, Kapil supports various regulatory programs such as FedRAMP and the EU Data Act and holds CISSP certification.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt; 
&lt;footer&gt; 
 &lt;div class="blog-author-box"&gt; 
  &lt;div class="blog-author-image"&gt; 
   &lt;img loading="lazy" src="https://d2908q01vomqb2.cloudfront.net/22d200f8670dbdb3e253a90eee5098477c95c23d/2026/07/31/hector-rodriguez.png" alt="Hector Rodriguez" width="120" height="160" class="aligncenter size-full wp-image-43130"&gt; 
  &lt;/div&gt; 
  &lt;h3 class="lb-h4"&gt;Hector Rodriguez&lt;/h3&gt; 
  &lt;p&gt;Hector is a Principal Industry Specialist and Executive Security Advisor, AWS Health &amp;amp; Life Sciences. He has over 25 years of experience enabling Health &amp;amp; Life Sciences business and clinical transformation and innovation and with multiple industry and academic groups. He is a board advisor for healthcare startups, a founding member of the HITRUST Business Associate Council and a health industry and cybersecurity curriculum advisor and lecturer.&lt;/p&gt; 
  &lt;p&gt;&lt;/p&gt;
 &lt;/div&gt; 
&lt;/footer&gt;</content:encoded>
					
					
			
		
		
			</item>
	</channel>
</rss>