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

<channel>
	<title>authorization &#8211; Noise</title>
	<atom:link href="https://noise.getoto.net/tag/authorization/feed/" rel="self" type="application/rss+xml" />
	<link>https://noise.getoto.net</link>
	<description>The collective thoughts of the interwebz</description>
	<lastBuildDate>Mon, 06 Jul 2026 16:52:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Enforce least-privilege authorization in multi-agent AI chains using Cedar</title>
		<link>https://noise.getoto.net/2026/07/06/enforce-least-privilege-authorization-in-multi-agent-ai-chains-using-cedar/</link>
		
		<dc:creator><![CDATA[Dhananjay Karanjkar]]></dc:creator>
		<pubDate>Mon, 06 Jul 2026 16:52:23 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[Amazon Verified Permissions]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS Lambda]]></category>
		<category><![CDATA[Best practices]]></category>
		<category><![CDATA[least privilege]]></category>
		<category><![CDATA[Oauth]]></category>
		<category><![CDATA[OWASP]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=25fc05c50211a7178d1f6f5ba117b08e</guid>

					<description><![CDATA[If you’re building multi-agent AI systems, you need to prevent authorization scope from silently expanding as agents delegate tasks through multi-hop chains. Without proper controls, an agent can potentially act beyond what the originating user authorized, even when role-based access control (RBAC) policies are in place. The OWASP Top 10 for Agentic Applications classifies this […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Why Policy in Amazon Bedrock AgentCore chose Cedar for securing agentic workflows</title>
		<link>https://noise.getoto.net/2026/05/20/why-policy-in-amazon-bedrock-agentcore-chose-cedar-for-securing-agentic-workflows/</link>
		
		<dc:creator><![CDATA[Liana Hadarean]]></dc:creator>
		<pubDate>Wed, 20 May 2026 20:56:03 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Amazon Bedrock]]></category>
		<category><![CDATA[Amazon Bedrock AgentCore]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[Automated reasoning]]></category>
		<category><![CDATA[generative AI]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=c0c6428c2f4171600fa4dbce41b4280c</guid>

					<description><![CDATA[Agents have agency: they adapt and find multiple ways to solve problems. This autonomy creates a fundamental security challenge: the large language model (LLM) at the heart of the agent is non-deterministic, and its decisions can’t be predicted or guaranteed in advance. It can hallucinate harmful actions with complete confidence. It’s vulnerable to prompt injection […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Secure your Express application APIs in minutes with Amazon Verified Permissions</title>
		<link>https://noise.getoto.net/2025/06/17/secure-your-express-application-apis-in-minutes-with-amazon-verified-permissions/</link>
		
		<dc:creator><![CDATA[Trevor Schiavone]]></dc:creator>
		<pubDate>Tue, 17 Jun 2025 16:08:15 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[Amazon Verified Permissions]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=6c84ada385d66cd7723af38930bc2aa8</guid>

					<description><![CDATA[Today, Amazon Verified Permissions announced the release of @verifiedpermissions/authorization-clients-js, an open source package that developers can use to implement external fine-grained authorization for Express.js web application APIs in minutes when using Verified Permissions. Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications. […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Connect your on-premises Kubernetes cluster to AWS APIs using IAM Roles Anywhere</title>
		<link>https://noise.getoto.net/2025/02/24/connect-your-on-premises-kubernetes-cluster-to-aws-apis-using-iam-roles-anywhere/</link>
		
		<dc:creator><![CDATA[Varun Sharma]]></dc:creator>
		<pubDate>Mon, 24 Feb 2025 16:25:01 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[EKS]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[IAM Roles Anywhere]]></category>
		<category><![CDATA[Identity]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security token service]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[X.509 certificate]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=13538fb61a99518e62926adb5496f817</guid>

					<description><![CDATA[Many customers want to seamlessly integrate their on-premises Kubernetes workloads with AWS services, implement hybrid workloads, or migrate to AWS. Previously, a common approach involved creating long-term access keys, which posed security risks and is no longer recommended. While solutions such as Kubernetes secrets vault and third-party options exist, they fail to address the underlying […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Device Code Phishing</title>
		<link>https://noise.getoto.net/2025/02/19/device-code-phishing/</link>
		
		<dc:creator><![CDATA[Bruce Schneier]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 15:07:50 +0000</pubDate>
				<category><![CDATA[authentication]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[Phishing]]></category>
		<category><![CDATA[russia]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.schneier.com/?p=69948</guid>

					<description><![CDATA[<p>This isn’t new, but it’s <a href="https://arstechnica.com/information-technology/2025/02/russian-spies-use-device-code-phishing-to-hijack-microsoft-accounts/">increasingly popular</a>:</p>
<blockquote><p>The technique is known as device code phishing. It exploits “device code flow,” a form of authentication formalized in the industry-wide <a href="https://datatracker.ietf.org/doc/html/draft-ietf-oauth-device-flow-07#section-3.4">OAuth standard</a>. Authentication through device code flow is designed for logging printers, smart TVs, and similar devices into accounts. These devices typically don’t support browsers, making it difficult to sign in using more standard forms of authentication, such as entering user names, passwords, and two-factor mechanisms.</p>
<p>Rather than authenticating the user directly, the input-constrained device displays an alphabetic or alphanumeric device code along with a link associated with the user account. The user opens the link on a computer or other device that’s easier to sign in with and enters the code. The remote server then sends a token to the input-constrained device that logs it into the account...</p></blockquote>]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Enhancing data privacy with layered authorization for Amazon Bedrock Agents</title>
		<link>https://noise.getoto.net/2024/10/02/enhancing-data-privacy-with-layered-authorization-for-amazon-bedrock-agents/</link>
		
		<dc:creator><![CDATA[Jeremy Ware]]></dc:creator>
		<pubDate>Wed, 02 Oct 2024 14:23:18 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[Amazon Bedrock]]></category>
		<category><![CDATA[Amazon Verified Permissions]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[Best practices]]></category>
		<category><![CDATA[generative AI]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=8038eee1b93f1d391d3f5ebb3a166d05</guid>

					<description><![CDATA[Customers are finding several advantages to using generative AI within their applications. However, using generative AI adds new considerations when reviewing the threat model of an application, whether you’re using it to improve the customer experience for operational efficiency, to generate more tailored or specific results, or for other reasons. Generative AI models are inherently […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Network perimeter security protections for generative AI</title>
		<link>https://noise.getoto.net/2024/08/07/network-perimeter-security-protections-for-generative-ai/</link>
		
		<dc:creator><![CDATA[Riggs Goodman III]]></dc:creator>
		<pubDate>Wed, 07 Aug 2024 13:38:37 +0000</pubDate>
				<category><![CDATA[Amazon Bedrock]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS Shield]]></category>
		<category><![CDATA[AWS WAF]]></category>
		<category><![CDATA[Best practices]]></category>
		<category><![CDATA[generative AI]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=685ff4da5662a99d9314a5b4988a6dc9</guid>

					<description><![CDATA[Generative AI–based applications have grown in popularity in the last couple of years. Applications built with large language models (LLMs) have the potential to increase the value companies bring to their customers. In this blog post, we dive deep into network perimeter protection for generative AI applications. We’ll walk through the different areas of network […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>AWS recognized as an Overall Leader in 2024 KuppingerCole Leadership Compass for Policy Based Access Management</title>
		<link>https://noise.getoto.net/2024/02/27/aws-recognized-as-an-overall-leader-in-2024-kuppingercole-leadership-compass-for-policy-based-access-management/</link>
		
		<dc:creator><![CDATA[Julian Lovelock]]></dc:creator>
		<pubDate>Tue, 27 Feb 2024 14:07:14 +0000</pubDate>
				<category><![CDATA[Amazon Verified Permissions]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[Foundational (100)]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=f6209715ceea4cae2d24a331ce234988</guid>

					<description><![CDATA[Amazon Web Services (AWS) was recognized by KuppingerCole Analysts AG as an Overall Leader in the firm’s Leadership Compass report for Policy Based Access Management. The Leadership Compass report reveals Amazon Verified Permissions as an Overall Leader (as shown in Figure 1), a Product Leader for functional strength, and an Innovation Leader for open source […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How to implement cryptographic modules to secure private keys used with IAM Roles Anywhere</title>
		<link>https://noise.getoto.net/2023/09/20/how-to-implement-cryptographic-modules-to-secure-private-keys-used-with-iam-roles-anywhere/</link>
		
		<dc:creator><![CDATA[Edouard Kachelmann]]></dc:creator>
		<pubDate>Wed, 20 Sep 2023 19:55:17 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS Identity and Access Management (IAM)]]></category>
		<category><![CDATA[Cryptographic library]]></category>
		<category><![CDATA[Hardware security modules]]></category>
		<category><![CDATA[IAM Roles Anywhere]]></category>
		<category><![CDATA[Identity]]></category>
		<category><![CDATA[PKCS#11]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[X.509 certificate]]></category>
		<category><![CDATA[YubiKey]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=1d7699bb596f154a24033002b191c972</guid>

					<description><![CDATA[AWS Identity and Access Management (IAM) Roles Anywhere enables workloads that run outside of Amazon Web Services (AWS), such as servers, containers, and applications, to use X.509 digital certificates to obtain temporary AWS credentials and access AWS resources, the same way that you use IAM roles for workloads on AWS. Now, IAM Roles Anywhere allows […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How to Grant Another SES Account or User Permission To Send Emails</title>
		<link>https://noise.getoto.net/2023/06/30/how-to-grant-another-ses-account-or-user-permission-to-send-emails/</link>
		
		<dc:creator><![CDATA[bajavani]]></dc:creator>
		<pubDate>Fri, 30 Jun 2023 19:40:17 +0000</pubDate>
				<category><![CDATA[Amazon Simple Email Service]]></category>
		<category><![CDATA[Amazon Simple Email Service (SES)]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[email best practices]]></category>
		<category><![CDATA[outbound email]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=c77356e279585a593008efdf71f205c7</guid>

					<description><![CDATA[Amazon Simple Email Service (Amazon SES) is a bulk and transactional email sending service for businesses and developers. To send emails from a particular email address through SES, users have to verify ownership of the email address, the domain used by the email address, or a parent domain of the domain used by the email […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>ABAC on SpiceDB: Enabling Netflix’s Complex Identity Types</title>
		<link>https://noise.getoto.net/2023/05/19/abac-on-spicedb-enabling-netflixs-complex-identity-types/</link>
		
		<dc:creator><![CDATA[Netflix Technology Blog]]></dc:creator>
		<pubDate>Fri, 19 May 2023 12:01:47 +0000</pubDate>
				<category><![CDATA[authorization]]></category>
		<category><![CDATA[distributed-systems]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[software-architecture]]></category>
		<guid isPermaLink="false">https://medium.com/p/c118f374fa89</guid>

					<description><![CDATA[<p>By <a href="https://www.linkedin.com/in/chris-w-0a884022/">Chris Wolfe</a>, <a href="https://www.linkedin.com/in/joseph-s-4324904/">Joey Schorr</a>, and <a href="https://www.linkedin.com/in/vroldanbet/">Victor Roldán Betancort</a></p><h3>Introduction</h3><p>The authorization team at Netflix recently sponsored work to add Attribute Based Access Control (ABAC) support to AuthZed’s <a href="https://github.com/authzed/spicedb">open source Google Zanzibar inspired</a> authorization system, <a href="https://authzed.com/products/spicedb">SpiceDB</a>. Netflix required attribute support in SpiceDB to support core Netflix application identity constructs. This post discusses why Netflix wanted ABAC support in SpiceDB, how Netflix collaborated with AuthZed, the end result–<a href="https://authzed.com/docs/reference/caveats">SpiceDB Caveats</a>, and how Netflix may leverage this new feature.</p><p>Netflix is always looking for security, ergonomic, or efficiency improvements, and this extends to authorization tools. <a href="https://authzed.com/blog/what-is-google-zanzibar">Google Zanzibar</a> is exciting to Netflix as it makes it easier to produce authorization decision objects and reverse indexes for resources a principal can access.</p><p>Last year, while experimenting with Zanzibar approaches to authorization, Netflix found SpiceDB, the <a href="https://github.com/authzed/spicedb">open source Google Zanzibar inspired permission system</a>, and built a prototype to experiment with modeling. The prototype uncovered trade-offs required to implement Attribute Based Access Control in SpiceDB, which made it poorly suited to Netflix’s core requirements for application identities.</p><h3>Why did Netflix Want Caveated Relationships?</h3><p>Netflix application identities are fundamentally attribute based: e.g. an instance of the Data Processor runs in eu-west-1 in the test environment with a public shard.</p><p>Authorizing these identities is done not only by application name, but by specifying specific attributes on which to match. An application owner might want to craft a policy like “Application members of the EU data processors group can access a PI decryption key”. This is one normal relationship in SpiceDB. But, they might also want to specify a policy for compliance reasons that only allows access to the PI key from data processor instances running in the EU within a sensitive shard. Put another way, an identity should only be considered to have the “is member of the EU-data-processors group” if certain identity attributes (like region==eu) match in addition to the application name. This is a Caveated SpiceDB relationship.</p><h3>Netflix Modeling Challenges Before Caveats</h3><p>SpiceDB, being a Relationship Based Access Control (ReBAC) system, expected authorization checks to be performed against the existence of a specific relationship between objects. Users fit this model — they have a single user ID to describe who they are. As described above, Netflix applications do not fit this model. Their attributes are used to scope permissions to varying degrees.</p><p>Netflix ran into significant difficulties in trying to fit their existing policy model into relations. To do so Netflix’s design required:</p><ul><li>An event based mechanism that could ingest information about application autoscaling groups. An autoscaling group isn’t the lowest level of granularity, but it’s relatively close to the lowest level where we’d typically see authorization policy applied.</li><li>Ingest the attributes describing the autoscaling group and write them as separate relations. That is for the data-processor, Netflix would need to write relations describing the region, environment, account, application name, etc.</li><li>At authZ check time, provide the attributes for the identity to check, e.g. “can app bar in us-west-2 access this document.” SpiceDB is then responsible for figuring out which relations map back to the autoscaling group, e.g. name, environment, region, etc.</li><li>A cleanup process to prune stale relationships from the database.</li></ul><p>What was problematic about this design? Aside from being complicated, there were a few specific things that made Netflix uncomfortable. The most salient being that i<strong>t wasn’t resilient to an absence of relationship data, e.g. if a new autoscaling group started and reporting its presence to SpiceDB had not yet happened, the autoscaling group members would be missing necessary permissions to run</strong>. All this meant that Netflix would have to write and prune the relationship state with significant freshness requirements. This would be a significant departure from its existing policy based system.</p><p>While working through this, Netflix hopped into the SpiceDB Discord to chat about possible solutions and found an open community issue: the <a href="https://github.com/authzed/spicedb/issues/386">caveated relationships proposal</a>.</p><h3>The Beginning of SpiceDB Caveats</h3><p>The SpiceDB community had already explored <a href="https://github.com/authzed/spicedb/issues/158">integrating SpiceDB with Open Policy Agent (OPA)</a> and concluded it strayed too far from Zanzibar’s core promise of global horizontal scalability with strong consistency. With Netflix’s support, the AuthZed team pondered a Zanzibar-native approach to Attribute-Based Access Control.</p><p>The requirements were captured and published as the <a href="https://github.com/authzed/spicedb/issues/386">caveated relationships proposal on GitHub</a> for feedback from the SpiceDB community. The community’s excitement and interest became apparent through comments, reactions, and conversations on the <a href="https://authzed.com/discord">SpiceDB Discord server</a>. Clearly, Netflix wasn’t the only one facing challenges when reconciling SpiceDB with policy-based approaches, so Netflix decided to help! By sponsoring the project, Netflix was able to help AuthZed prioritize engineering effort and accelerate adding Caveats to SpiceDB.</p><h3>Building SpiceDB Caveats</h3><h4>Quick Intro to SpiceDB</h4><p>The <a href="https://authzed.com/docs/reference/schema-lang">SpiceDB Schema Language</a> lays the rules for how to build, traverse, and interpret SpiceDB’s Relationship Graph to make authorization decisions. SpiceDB Relationships, e.g., document:readme writer user:emilia, are stored as relationships that represent a graph within a datastore like CockroachDB or PostgreSQL. SpiceDB walks the graph and decomposes it into subproblems. These subproblems are assigned through <a href="https://authzed.com/blog/consistent-hash-load-balancing-grpc/">consistent hashing</a> and dispatched to a node in a cluster running SpiceDB. Over time, each node caches a subset of subproblems to support a distributed cache, reduce the datastore load, and achieve SpiceDB’s horizontal scalability.</p><h4>SpiceDB Caveats Design</h4><p>The fundamental challenge with policies is that their input arguments can change the authorization result as understood by a centralized relationships datastore. If SpiceDB were to cache subproblems that have been “tainted” with policy variables, the likelihood those are reused for other requests would decrease and thus severely affect the cache hit rate. As you’d suspect, this would jeopardize one of the pillars of the system: its ability to scale.</p><p>Once you accept that adding input arguments to the distributed cache isn’t efficient, you naturally gravitate toward the first question: what if you keep those inputs out of the cached subproblems? They are only known at request-time, so let’s add them as a variable in the subproblem! The cost of propagating those variables, assembling them, and executing the logic pales compared to fetching relationships from the datastore.</p><p>The next question was: how do you integrate the policy decisions into the relationships graph? The SpiceDB Schema Languages’ core concepts are <a href="https://authzed.com/docs/reference/glossary#relation">Relations</a> and <a href="https://authzed.com/docs/reference/glossary#permission">Permissions</a>; these are how a developer defines the shape of their relationships and how to traverse them. Naturally, being a graph, it’s fitting to add policy logic at the edges or the nodes. That leaves at least two obvious options: <strong>policy at the Relation level, or policy at the Permission level.</strong></p><p>After iterating on both options to get a feel for the ergonomics and expressiveness the choice was <strong>policy at the relation level</strong>. After all, SpiceDB is a Relationship Based Access Control (ReBAC) system. Policy at the relation level allows you to parameterize each relationship, which brought about the saying “this relationship exists, but with a Caveat!.” With this approach, SpiceDB could do request-time relationship vetoing like so:</p><pre>definition human {}<br><br>caveat the_answer(received int) {<br>  received == 42<br>}<br>definition the_answer_to_life_the_universe_and_everything {<br>  relation humans: human with the_answer<br>  permission enlightenment = humans</pre><p>Netflix and AuthZed discussed the concept of static versus dynamic Caveats as well. A developer would define static Caveat expressions in the SpiceDB Schema, while dynamic Caveats would have expressions defined at run time. The discussion centered around typed versus dynamic programming languages, but given SpiceDB’s Schema Language was designed for type safety, it seemed coherent with the overall design to continue with static Caveats. To support runtime-provided policies, the choice was to introduce expressions as arguments to a Caveat. Keeping the SpiceDB Schema easy to understand was a key driver for this decision.</p><p>For defining Caveats, the main requirement was to provide an expression language with first-class support for partially-evaluated expressions. <a href="https://github.com/google/cel-spec">Google’s CEL</a> seemed like the obvious choice: a protobuf-native expression language that evaluates in linear time, with first-class support for partial results that can be run at the edge, and is not turing complete. CEL expressions are type-safe, so they wouldn’t cause as many errors at runtime and can be stored in the datastore as a compiled protobuf. Given the near-perfect requirement match, it does make you wonder what Google’s Zanzibar has been up to since the white paper!</p><p>To execute the logic, SpiceDB would have to return a third response CAVEATED, in addition to ALLOW and DENY, to signal that a result of a CheckPermission request depends on computing an unresolved chain of CEL expressions.</p><p>SpiceDB Caveats needed to allow static input variables to be stored before evaluation to represent the multi-dimensional nature of Netflix application identities. Today, this is called “Caveat context,” defined by the values written in a SpiceDB Schema alongside a Relation and those provided by the client. Think of build time variables as an expansion of a templated CEL expression, and those take precedence over request-time arguments. Here is an example:</p><pre>caveat the_answer(received int, expected int) {<br>  received == expected<br>}</pre><p>Lastly, to deal with scenarios where there are multiple Caveated subproblems, the decision was to collect up a final CEL expression tree before evaluating it. The result of the final evaluation can be ALLOW, DENY, or CAVEATED. Things get trickier with wildcards and SpiceDB APIs, but let’s save that for another post! If the response is CAVEATED, the client receives a list of missing variables needed to properly evaluate the expression.</p><p>To sum up! The primary design decisions were:</p><ul><li>Caveats defined at the Relation-level, not the Permission-level</li><li>Keep Caveats in line with SpiceDB Schema’s type-safe nature</li><li>Support well-typed values provided by the caller</li><li>Use Google’s CEL to define Caveat expressions</li><li>Introduce a new result type: CAVEATED</li></ul><h3>How do SpiceDB Caveats Change Authorizing Netflix Identities?</h3><p><a href="https://authzed.com/docs/reference/caveats">SpiceDB Caveats</a> simplify this approach by allowing Netflix to specify authorization policy as they have in the past for applications. Instead of needing to have the entire state of the authorization world persisted as relations, the system can have relations and attributes of the identity used at authorization check time.</p><p>Now Netflix can write a Caveat similar to match_fine , described below, that takes lists of expected attributes, e.g. region, account, etc. This Caveat would allow the specific application named by the relation as long as the context of the authorization check had an observed account, stack, detail, region, and extended attribute values that matched the values in their expected counterparts. This <a href="https://play.authzed.com/s/51q8FOZ1PlzG/assertions">playground</a> has a live version of the schema, relations, etc. with which to experiment.</p><pre>definition app {}<br><br>caveat match_fine(<br>  expected_accounts list&#60;string&#62;,<br>  expected_regions list&#60;string&#62;,<br>  expected_stacks list&#60;string&#62;,<br>  expected_details list&#60;string&#62;,<br>  expected_ext_attrs map&#60;any&#62;,<br>  observed_account string,<br>  observed_region string,<br>  observed_stack string,<br>  observed_detail string,<br>  observed_ext_attrs map&#60;any&#62;<br>) {<br>  observed_account in expected_accounts &#38;&#38;<br>  observed_region in expected_regions &#38;&#38;<br>  observed_stack in expected_stacks &#38;&#38;<br>  observed_detail in expected_details &#38;&#38;<br>  expected_ext_attrs.isSubtreeOf(observed_ext_attrs)<br>}<br><br>definition movie {<br>  relation replicator: app with match_fine<br>  permission replicate = replicator<br>}</pre><p>Using this SpiceDB Schema we can write a relation to restrict access to the replicator application. It should only be allowed to run when</p><ul><li>It is in the highrisk or birdie accounts</li><li>AND in either us-west-1 or us-east-1</li><li>AND it has stack bg</li><li>AND it has detail casser</li><li>AND its extended attributes contain the key-value pair ‘foo: bar’</li></ul><pre>movie:newspecial#replicator@app:mover[match_fine:{"expected_accounts":["highrisk","birdie"],"expected_regions":["us-west-1","us-east-1"],"expected_stacks":["bg"],"expected_details":["casser"],"expected_ext_attrs":{"foo":"bar"}}]</pre><p>With the playground we can also make assertions that can mirror the behavior we’d see from the CheckPermission API. These assertions make it clear that our caveats work as expected.</p><pre>assertTrue:<br>- 'movie:newspecial#replicate@app:mover with {"observed_account": "highrisk", "observed_region": "us-west-1", "observed_stack": "bg", "observed_detail": "casser", "observed_ext_attrs": {"foo": "bar"}}'<br>assertFalse:<br>- 'movie:newspecial#replicate@app:mover with {"observed_account": "lowrisk", "observed_region": "us-west-1", "observed_stack": "bg", "observed_detail": "casser", "observed_ext_attrs": {"foo": "bar"}}'<br>- 'movie:newspecial#replicate@app:purger with {"observed_account": "highrisk", "observed_region": "us-west-1", "observed_stack": "bg", "observed_detail": "casser", "observed_ext_attrs": {"foo": "bar"}}'</pre><h3>Closing</h3><p>Netflix and AuthZed are both excited about the collaboration’s outcome. Netflix has another authorization tool it can employ and SpiceDB users have another option with which to perform rich authorization checks. Bridging the gap between policy based authorization and ReBAC is a powerful paradigm that is already benefiting companies looking to Zanzibar based implementations for modernizing their authorization stack.</p><h3>Acknowledgments</h3><ul><li><a href="https://www.linkedin.com/in/chris-w-0a884022/">Chris Wolfe</a></li><li><a href="https://www.linkedin.com/in/joseph-s-4324904/">Joey Schorr</a></li><li><a href="https://www.linkedin.com/in/vroldanbet/">Victor Roldán Betancort</a></li><li><a href="https://www.linkedin.com/in/chestonlee/">Cheston Lee</a></li></ul><h3>Additional Reading</h3><ul><li><a href="https://authzed.com/blog/what-is-google-zanzibar">What is Google Zanzibar</a></li><li><a href="https://authzed.com/zanzibar">Annotated Google Zanzibar Paper</a></li><li><a href="https://github.com/authzed/spicedb">SpiceDB, an Open Source, Google Zanzibar Inspired Authorization System</a></li><li><a href="https://github.com/google/cel-spec">Google’s CEL</a></li><li>SpiceDB <a href="https://authzed.com/docs/reference/glossary">Glossary</a></li><li><a href="https://authzed.com/blog/top-three-caveat-use-cases/">Top-3 Most Used SpiceDB Caveat Patterns (authzed.com)</a></li><li><a href="https://authzed.com/blog/check-it-out">How Permissions are Answered in SpiceDB</a></li><li><a href="https://play.authzed.com/s/51q8FOZ1PlzG">Netflix Complex Identities Example Schema</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&#38;referrerSource=full_rss&#38;postId=c118f374fa89" width="1" height="1" alt=""><hr><p><a href="https://netflixtechblog.com/abac-on-spicedb-enabling-netflixs-complex-identity-types-c118f374fa89">ABAC on SpiceDB: Enabling Netflix’s Complex Identity Types</a> was originally published in <a href="https://netflixtechblog.com/">Netflix TechBlog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How to monitor and query IAM resources at scale – Part 2</title>
		<link>https://noise.getoto.net/2023/02/21/how-to-monitor-and-query-iam-resources-at-scale-part-2/</link>
		
		<dc:creator><![CDATA[Michael Chan]]></dc:creator>
		<pubDate>Tue, 21 Feb 2023 20:15:45 +0000</pubDate>
				<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS Identity and Access Management (IAM)]]></category>
		<category><![CDATA[control plane]]></category>
		<category><![CDATA[data plane]]></category>
		<category><![CDATA[eventual consistency]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Rate-limiting]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[throttling]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=b8d21a489702fce848fa415e6f46f32a</guid>

					<description><![CDATA[In this post, we continue with our recommendations for using AWS Identity and Access Management (IAM) APIs. In part 1 of this two-part series, we described how you could create IAM resources and use them soon after for authorization decisions. We also described options for monitoring and responding to IAM resource changes for entire accounts. […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How to monitor and query IAM resources at scale – Part 1</title>
		<link>https://noise.getoto.net/2023/02/21/how-to-monitor-and-query-iam-resources-at-scale-part-1/</link>
		
		<dc:creator><![CDATA[Michael Chan]]></dc:creator>
		<pubDate>Tue, 21 Feb 2023 20:14:33 +0000</pubDate>
				<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS Identity and Access Management (IAM)]]></category>
		<category><![CDATA[control plane]]></category>
		<category><![CDATA[data plane]]></category>
		<category><![CDATA[eventual consistency]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[Rate-limiting]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<category><![CDATA[Technical How-to]]></category>
		<category><![CDATA[throttling]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=811f3a8796e583f57efa94b20352cef8</guid>

					<description><![CDATA[In this two-part blog post, we’ll provide recommendations for using AWS Identity and Access Management (IAM) APIs, and we’ll share useful details on how IAM works so that you can use it more effectively. For example, you might be creating new IAM resources such as roles and policies through automation and notice a delay for resource propagations. […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Extend AWS IAM roles to workloads outside of AWS with IAM Roles Anywhere</title>
		<link>https://noise.getoto.net/2022/07/06/extend-aws-iam-roles-to-workloads-outside-of-aws-with-iam-roles-anywhere/</link>
		
		<dc:creator><![CDATA[Faraz Angabini]]></dc:creator>
		<pubDate>Wed, 06 Jul 2022 20:04:19 +0000</pubDate>
				<category><![CDATA[authentication]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[IAM Roles Anywhere]]></category>
		<category><![CDATA[Identity]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security token service]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<category><![CDATA[X.509 certificate]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=cff4834bab36c6b70e055100854ff393</guid>

					<description><![CDATA[AWS Identity and Access Management (IAM) has now made it easier for you to use IAM roles for your workloads that are running outside of AWS, with the release of IAM Roles Anywhere. This feature extends the capabilities of IAM roles to workloads outside of AWS. You can use IAM Roles Anywhere to provide a […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Use Amazon Cognito to add claims to an identity token for fine-grained authorization</title>
		<link>https://noise.getoto.net/2022/06/08/use-amazon-cognito-to-add-claims-to-an-identity-token-for-fine-grained-authorization/</link>
		
		<dc:creator><![CDATA[Ajit Ambike]]></dc:creator>
		<pubDate>Wed, 08 Jun 2022 17:55:48 +0000</pubDate>
				<category><![CDATA[Amazon Cognito]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[Claims]]></category>
		<category><![CDATA[Expert (400)]]></category>
		<category><![CDATA[Identity Token]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=d06077377da63024a5fca1c9ef6a44b6</guid>

					<description><![CDATA[With Amazon Cognito, you can quickly add user sign-up, sign-in, and access control to your web and mobile applications. After a user signs in successfully, Cognito generates an identity token for user authorization. The service provides a pre token generation trigger, which you can use to customize identity token claims before token generation. In this […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Forging Australian Driver’s Licenses</title>
		<link>https://noise.getoto.net/2022/05/23/forging-australian-drivers-licenses/</link>
		
		<dc:creator><![CDATA[Bruce Schneier]]></dc:creator>
		<pubDate>Mon, 23 May 2022 11:09:25 +0000</pubDate>
				<category><![CDATA[authorization]]></category>
		<category><![CDATA[cars]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[forgery]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://www.schneier.com/?p=65446</guid>

					<description><![CDATA[<p>The New South Wales digital driver’s license has <a href="https://blog.dvuln.com/blogs/servicensw-digital-superbad">multiple implementation flaws</a> that allow for easy forgeries.</p>
<blockquote><p>This file is encrypted using AES-256-CBC encryption combined with Base64 encoding.</p>
<p>A 4-digit application PIN (which gets set during the initial onboarding when a user first instals the application) is the encryption password used to protect or encrypt the licence data.</p>
<p>The problem here is that an attacker who has access to the encrypted licence data (whether that be through accessing a phone backup, direct access to the device or remote compromise) could easily brute-force this 4-digit PIN by using a script that would try all 10,000 combinations…...</p></blockquote>]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Scaling cross-account AWS KMS–encrypted Amazon S3 bucket access using ABAC</title>
		<link>https://noise.getoto.net/2022/02/23/scaling-cross-account-aws-kms-encrypted-amazon-s3-bucket-access-using-abac/</link>
		
		<dc:creator><![CDATA[Jorg Huser]]></dc:creator>
		<pubDate>Wed, 23 Feb 2022 20:19:34 +0000</pubDate>
				<category><![CDATA[ABAC]]></category>
		<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[Amazon EMR]]></category>
		<category><![CDATA[Amazon S3]]></category>
		<category><![CDATA[Attribute-based access control]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS Key Management Service (KMS)]]></category>
		<category><![CDATA[AWS Lake Formation]]></category>
		<category><![CDATA[Big Data Platform]]></category>
		<category><![CDATA[Big Data Security Management]]></category>
		<category><![CDATA[cross-account privilege design escalation]]></category>
		<category><![CDATA[Data Lake]]></category>
		<category><![CDATA[Data Protection in Data Lakes]]></category>
		<category><![CDATA[Key management]]></category>
		<category><![CDATA[Key Management for Big Data]]></category>
		<category><![CDATA[PrincipalOrgId]]></category>
		<category><![CDATA[Resource-based policies]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=4be77477157ab5936b2faa4570cb47cb</guid>

					<description><![CDATA[This blog post shows you how to share encrypted Amazon Simple Storage Service (Amazon S3) buckets across accounts on a multi-tenant data lake. Our objective is to show scalability over a larger volume of accounts that can access the data lake, in a scenario where there is one central account to share from. Most use […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Control access to Amazon Elastic Container Service resources by using ABAC policies</title>
		<link>https://noise.getoto.net/2022/02/17/control-access-to-amazon-elastic-container-service-resources-by-using-abac-policies/</link>
		
		<dc:creator><![CDATA[Kriti Heda]]></dc:creator>
		<pubDate>Thu, 17 Feb 2022 17:58:35 +0000</pubDate>
				<category><![CDATA[ABAC]]></category>
		<category><![CDATA[Amazon ECS]]></category>
		<category><![CDATA[Attribute-based access control]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS IAM]]></category>
		<category><![CDATA[Intermediate (200)]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<category><![CDATA[Tags]]></category>
		<category><![CDATA[TBAC]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=f9cc292dcc0a48112ebb6b2c9eba54e2</guid>

					<description><![CDATA[As an AWS customer, if you use multiple Amazon Elastic Container Service (Amazon ECS) services/tasks to achieve better isolation, you often have the challenge of how to manage access to these containers. In such cases, using tags can enable you to categorize these services in different ways, such as by owner or environment. This blog […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>How to secure API Gateway HTTP endpoints with JWT authorizer</title>
		<link>https://noise.getoto.net/2022/02/14/how-to-secure-api-gateway-http-endpoints-with-jwt-authorizer/</link>
		
		<dc:creator><![CDATA[Siva Rajamani]]></dc:creator>
		<pubDate>Mon, 14 Feb 2022 18:32:19 +0000</pubDate>
				<category><![CDATA[*Learning Levels]]></category>
		<category><![CDATA[API GW]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS security]]></category>
		<category><![CDATA[Expert (400)]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[JWT authorizer]]></category>
		<category><![CDATA[Lambda Authorizer]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<category><![CDATA[serverless]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=78711705addbceb09dddcf35444c2f18</guid>

					<description><![CDATA[This blog post demonstrates how you can secure Amazon API Gateway HTTP endpoints with JSON web token (JWT) authorizers. Amazon API Gateway helps developers create, publish, and maintain secure APIs at any scale, helping manage thousands of API calls. There are no minimum fees, and you only pay for the API calls you receive. Based […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
		<item>
		<title>Managing permissions with grants in AWS Key Management Service</title>
		<link>https://noise.getoto.net/2021/11/09/managing-permissions-with-grants-in-aws-key-management-service/</link>
		
		<dc:creator><![CDATA[Rick Yin]]></dc:creator>
		<pubDate>Mon, 08 Nov 2021 22:07:30 +0000</pubDate>
				<category><![CDATA[Advanced (300)]]></category>
		<category><![CDATA[authorization]]></category>
		<category><![CDATA[AWS Key Management Service*]]></category>
		<category><![CDATA[AWS KMS]]></category>
		<category><![CDATA[Grants]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Scaling]]></category>
		<category><![CDATA[Security Blog]]></category>
		<category><![CDATA[Security, Identity & Compliance]]></category>
		<guid isPermaLink="false">http://noise.getoto.net/?guid=80dfdf5adcf1f019b0d1c89bd4f8142e</guid>

					<description><![CDATA[AWS Key Management Service (AWS KMS) helps customers to use encryption to secure their data. When creating a new encrypted Amazon Web Services (AWS) resource, such as an Amazon Relational Database Service (Amazon RDS) database or an Amazon Simple Storage Service (Amazon S3) bucket, all you have to do is provide an AWS KMS key […]]]></description>
		
		
		<enclosure url="" length="0" type="" />

			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Object Caching 22/253 objects using Memcached
Page Caching using Disk: Enhanced 
Lazy Loading (feed)
Database Caching using Memcached

Served from: noise.getoto.net @ 2026-10-25 05:55:14 by W3 Total Cache
-->