{"id":23315,"date":"2026-08-14T04:59:25","date_gmt":"2026-08-14T04:59:25","guid":{"rendered":"https:\/\/scannn.com\/how-aws-iam-role-manager-rethinks-the-starting-point-for-iam-roles\/"},"modified":"2026-08-14T04:59:25","modified_gmt":"2026-08-14T04:59:25","slug":"how-aws-iam-role-manager-rethinks-the-starting-point-for-iam-roles","status":"publish","type":"post","link":"https:\/\/scannn.com\/lv\/how-aws-iam-role-manager-rethinks-the-starting-point-for-iam-roles\/","title":{"rendered":"How AWS IAM role manager rethinks the starting point for IAM roles"},"content":{"rendered":"\n<div id=\"\">\n<p>When you build a new application or capability on <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">Amazon Web Services (AWS)<\/a><\/span>, you want to focus on what you\u2019re building. Getting a service running almost always begins with <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/iam\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">AWS Identity and Access Management (IAM)<\/a><\/span>. 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\u2019t need to be manual.<\/p>\n<p>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.<\/p>\n<p>With that step automated, getting started takes minutes. You can create an <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/lambda\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">AWS Lambda<\/a><\/span> 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.<\/p>\n<p>Role manager is especially useful when you\u2019re 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\u2019t 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, <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/iam\/access-analyzer\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">AWS IAM Access Analyzer<\/a><\/span> reviews how it has been used and recommends a policy scoped to only the permissions it needs.<\/p>\n<p><h2>How to enable role manager<\/h2>\n<\/p>\n<p>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:<\/p>\n<ol id=\"rte-0b6c8890-8b9b-11f1-a645-1d1ac6419103\" class=\"tight\" start=\"1\" data-tight=\"true\">\n<li>Open the IAM console and choose <b>Account settings<\/b>.<\/li>\n<li>In the <b>role manager<\/b> section, choose <b>Enable<\/b>.<\/li>\n<\/ol>\n<div id=\"attachment_43282\" style=\"width: 2084px\" class=\"wp-caption aligncenter\">\n        <\/p>\n<p id=\"caption-attachment-43282\" class=\"wp-caption-text\">Figure 1: Enable Role Manager<\/p>\n<\/p><\/div>\n<p>Some AWS services already create a role for you when you create a resource that needs one. Role manager doesn\u2019t 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\u2019t handle: tasks whose permissions AWS can\u2019t determine in advance, such as running your own code. For those tasks, role manager provisions a role that you can narrow later.<\/p>\n<p><h2>Example: Create an Amazon EventBridge rule<\/h2>\n<\/p>\n<p>Start with a common task: an <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/eventbridge\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">Amazon EventBridge<\/a><\/span> rule that invokes a target, such as an <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/sqs\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">Amazon Simple Queue Service (Amazon SQS)<\/a><\/span> queue or an <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/sns\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">Amazon Simple Notification Service (Amazon SNS)<\/a><\/span> topic. Without role manager, you would pause here to create a role that lets EventBridge invoke the target, write the role\u2019s 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 <b>Create<\/b>, 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.<\/p>\n<div id=\"attachment_43283\" style=\"width: 1414px\" class=\"wp-caption aligncenter\">\n        <img loading=\"lazy\" decoding=\"async\" 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\"\/><\/p>\n<p id=\"caption-attachment-43283\" class=\"wp-caption-text\">Figure 2: Creating an EventBridge rule with no manual role setup<\/p>\n<\/p><\/div>\n<p>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.<\/p>\n<p>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 <code class=\"CodeInline\" style=\"color: #000\">AcquireRole<\/code> reuses an existing role instead of creating one, it needs only <code class=\"CodeInline\" style=\"color: #000\">iam:GetRole<\/code> and <code class=\"CodeInline\" style=\"color: #000\">iam:GetRoleTemplateVersion<\/code>. If you\u2019re missing either of these permissions, the console tells you which one is needed rather than creating the role.<\/p>\n<p><h2>Run code that calls other AWS services<\/h2>\n<\/p>\n<p>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.<\/p>\n<p>Because the permissions your code needs aren\u2019t known up front, role manager attaches the AWS managed policy <code class=\"CodeInline\" style=\"color: #000\">PowerUserAccess<\/code> to the role. <code class=\"CodeInline\" style=\"color: #000\">PowerUserAccess<\/code> grants access to AWS services so your function can call what it needs. By design, it doesn\u2019t grant permission to manage IAM, <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/organizations\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">AWS Organizations<\/a><\/span>, or account settings. The template also configures the role to trust only the Lambda service.<\/p>\n<div id=\"attachment_43344\" style=\"width: 1012px\" class=\"wp-caption aligncenter\">\n        <img loading=\"lazy\" decoding=\"async\" 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\"\/><\/p>\n<p id=\"caption-attachment-43344\" class=\"wp-caption-text\">Figure 3: Create an AWS Lambda function with no manual role setup<\/p>\n<\/p><\/div>\n<p>Role manager attaches an execution role, and your function is ready to run. Figure 4 shows the Execution role panel on the function\u2019s <strong>Configuration<\/strong> tab, with the role that role manager attached.<\/p>\n<div id=\"attachment_43345\" style=\"width: 1011px\" class=\"wp-caption aligncenter\">\n        <img loading=\"lazy\" decoding=\"async\" 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\"\/><\/p>\n<p id=\"caption-attachment-43345\" class=\"wp-caption-text\">Figure 4: Role manager provides a role automatically to an AWS Lambda function<\/p>\n<\/p><\/div>\n<p>You can open the role in the IAM console to review its permissions. Figure 5 shows the role\u2019s <strong>Permissions<\/strong> tab with the <code style=\"color: #000000\">PowerUserAccess<\/code> policy attached.<\/p>\n<div id=\"attachment_43346\" style=\"width: 1012px\" class=\"wp-caption aligncenter\">\n        <img loading=\"lazy\" decoding=\"async\" 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\"\/><\/p>\n<p id=\"caption-attachment-43346\" class=\"wp-caption-text\">Figure 5: Permissions of the role provided by role manager for an AWS Lambda function<\/p>\n<\/p><\/div>\n<p>You keep full visibility into what role manager creates. Every role it creates records the role template it came from, and both <code class=\"CodeInline\" style=\"color: #000\">GetRole<\/code> and <code class=\"CodeInline\" style=\"color: #000\">ListRoles<\/code> return that template reference. You can inspect any role in your account and tell which were created by role manager. You read a role\u2019s trust policy and permissions the same way you would for a role you authored, and <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/aws.amazon.com\/cloudtrail\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">AWS CloudTrail<\/a><\/span> records each role\u2019s creation.<\/p>\n<p><h2>Refining roles as workloads mature<\/h2>\n<\/p>\n<p>As your workloads mature, refine the roles that role manager created to follow least privilege. When you\u2019re ready, you can disable role manager and get IAM Access Analyzer unused access analysis. 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.<\/p>\n<p>Disabling role manager doesn\u2019t 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\u2019s 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.<\/p>\n<p><h2><b>Conclusion<\/b><\/h2>\n<\/p>\n<p>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.<\/p>\n<p>To get started, enable role manager in the IAM console and create a resource in a supported service. To learn more, see <span class=\"LinkEnhancement\"><a class=\"Link\" href=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/id_roles_create.html\" target=\"_blank\" rel=\"noopener\" data-cms-ai=\"0\">IAM role creation<\/a><\/span> and the list of supported services in the IAM User Guide.<\/p>\n<p>If you have feedback about this post, submit comments in the <strong>Comments<\/strong> section below.<\/p>\n<hr\/>\n<footer>\n<div class=\"blog-author-box\">\n<div class=\"blog-author-image\">\n          <img loading=\"lazy\" decoding=\"async\" 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\"\/>\n         <\/div>\n<h3 class=\"lb-h4\">Zach Jiang<\/h3>\n<p>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.<\/p>\n<\/p><\/div>\n<\/footer>\n<footer>\n<div class=\"blog-author-box\">\n<div class=\"blog-author-image\">\n          <img loading=\"lazy\" decoding=\"async\" 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\"\/>\n         <\/div>\n<h3 class=\"lb-h4\">David Sing<\/h3>\n<p>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.<\/p>\n<\/p><\/div>\n<\/footer>\n<footer>\n<div class=\"blog-author-box\">\n<div class=\"blog-author-image\">\n          <img loading=\"lazy\" decoding=\"async\" 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\"\/>\n         <\/div>\n<h3 class=\"lb-h4\">Punit Deotale<\/h3>\n<p>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.<\/p>\n<\/p><\/div>\n<\/footer>\n<p>       <!-- '\"` -->\n      <\/div>\n<p><a href=\"https:\/\/aws.amazon.com\/blogs\/security\/how-aws-iam-role-manager-rethinks-the-starting-point-for-iam-roles\/?utm_source=tldrinfosec\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When you build a new application or capability on Amazon Web Services (AWS), you want to focus on what you\u2019re 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 [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":23316,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[143],"tags":[],"class_list":["post-23315","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai"],"_links":{"self":[{"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/posts\/23315","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/comments?post=23315"}],"version-history":[{"count":0,"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/posts\/23315\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/media\/23316"}],"wp:attachment":[{"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/media?parent=23315"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/categories?post=23315"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scannn.com\/lv\/wp-json\/wp\/v2\/tags?post=23315"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}