{"id":4852,"date":"2026-10-09T10:56:00","date_gmt":"2026-10-09T10:56:00","guid":{"rendered":"https:\/\/www.xminds.com\/resources\/?p=4852"},"modified":"2026-10-09T11:18:26","modified_gmt":"2026-10-09T11:18:26","slug":"the-devsecops-mindset-zero-trust-in-practice","status":"publish","type":"post","link":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/","title":{"rendered":"The DevSecOps Mindset: Zero Trust in Practice"},"content":{"rendered":"\n<p>Zero Trust has become a major cybersecurity concept, but its value becomes clearer when applied to a real engineering problem.<\/p>\n\n\n\n<p>In a recent client project involving backend microservices, we identified security risks in how our CI\/CD pipelines accessed AWS resources. The existing setup relied on long-lived AWS access keys stored as CI\/CD secrets. Although this approach worked, it created a potential security risk: if the credentials were exposed, an attacker could misuse them to access AWS resources beyond what the deployment required.<\/p>\n\n\n\n<p>This made us re-evaluate how our deployment workloads were authenticated and what permissions they actually needed.<\/p>\n\n\n\n<p>Rather than trusting a workload simply because it was running inside our CI\/CD environment, we applied a Zero Trust approach:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Verify the identity of the workload.<\/li>\n\n\n\n<li>Grant only the permissions required for the deployment.<\/li>\n\n\n\n<li>Avoid long-lived credentials wherever possible.<\/li>\n\n\n\n<li>Limit access to specific AWS resources and actions.<\/li>\n\n\n\n<li>Make credentials temporary and short-lived.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>From Long-Lived Keys to Workload Identity<\/strong><\/h2>\n\n\n\n<p>The first step was removing the dependency on static AWS access keys from the CI\/CD pipeline.<\/p>\n\n\n\n<p>We configured OIDC-based authentication between GitLab CI\/CD and AWS. Instead of storing an AWS access key and secret key, the pipeline requests a signed identity token. AWS validates that identity and issues temporary credentials through an IAM role.<\/p>\n\n\n\n<p>This changed the authentication model from:<\/p>\n\n\n\n<p><strong>GitLab CI\/CD \u2192 Static AWS credentials \u2192 AWS<\/strong><\/p>\n\n\n\n<p>to:<\/p>\n\n\n\n<p><strong>GitLab CI\/CD \u2192 OIDC identity token \u2192 AWS IAM role \u2192 Temporary credentials<\/strong><\/p>\n\n\n\n<p>For example, consider a backend microservices project deployed to AWS ECS using GitLab CI\/CD. Initially, the pipeline stored AWS access keys as GitLab CI\/CD variables. These credentials were long-lived, and their permissions extended beyond what the deployment job actually required.<\/p>\n\n\n\n<p>We can change this approach by configuring OIDC federation between GitLab and AWS IAM. Instead of storing permanent AWS credentials, GitLab issues an identity token that AWS validates through an IAM OIDC identity provider. We then configure a dedicated IAM role with a trust policy restricted to the intended GitLab project and branch, allowing only authorized pipeline jobs to assume the role.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example 1: Restricting Who Can Assume the IAM Role<\/strong><\/h3>\n\n\n\n<p>The following AWS IAM trust policy allows an identity token from a specific GitLab project on the main branch to assume the deployment role.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>{<br>\u00a0\u00a0&#8220;Version&#8221;: &#8220;2012-10-17&#8221;,<br>\u00a0\u00a0&#8220;Statement&#8221;: [<br>\u00a0\u00a0\u00a0\u00a0{<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Effect&#8221;: &#8220;Allow&#8221;,<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Principal&#8221;: {<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Federated&#8221;: &#8220;arn:aws:iam::123456789012:oidc-provider\/gitlab.com&#8221;<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Action&#8221;: &#8220;sts:AssumeRoleWithWebIdentity&#8221;,<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Condition&#8221;: {<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;StringEquals&#8221;: {<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;gitlab.com:aud&#8221;: &#8220;sts.amazonaws.com&#8221;,<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;gitlab.com:sub&#8221;: &#8220;project_path:mygroup\/backend-api:ref_type:branch:ref:main&#8221;<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<br>\u00a0\u00a0\u00a0\u00a0}<br>\u00a0\u00a0]<br>}<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>This trust policy restricts which GitLab workload can assume the IAM role. AWS must also have the corresponding GitLab OIDC provider configured with the appropriate issuer URL and audience.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example 2: Applying Least-Privilege Permissions<\/strong><\/h3>\n\n\n\n<p>Verifying identity is only one part of Zero Trust. We also need to define what the authenticated workload is allowed to do.<\/p>\n\n\n\n<p>For example, the following IAM permissions policy allows the deployment role to describe a specific ECS service.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>{<br>\u00a0\u00a0&#8220;Version&#8221;: &#8220;2012-10-17&#8221;,<br>\u00a0\u00a0&#8220;Statement&#8221;: [<br>\u00a0\u00a0\u00a0\u00a0{<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Effect&#8221;: &#8220;Allow&#8221;,<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Action&#8221;: [<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;ecs:DescribeServices&#8221;<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8220;Resource&#8221;: &#8220;arn:aws:ecs:ap-south-1:123456789012:service\/backend-cluster\/backend-service&#8221;<br>\u00a0\u00a0\u00a0\u00a0}<br>\u00a0\u00a0]<br>}<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>This is a deliberately limited example, not a complete ECS deployment policy. A real deployment may also require permissions to update services, register task definitions, access a container registry, or pass an approved task execution role. Those permissions should be added only when required and scoped to the relevant resources.<\/p>\n\n\n\n<p>The key principle is that the pipeline should not receive administrator-level access just because it needs to deploy an application.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Example 3: Obtaining Temporary Credentials in GitLab CI\/CD<\/strong><\/h3>\n\n\n\n<p>With the OIDC provider and IAM role configured, the GitLab pipeline can request an identity token and exchange it for temporary AWS credentials through AWS STS.<\/p>\n\n\n\n<p>The following simplified .gitlab-ci.yml example demonstrates this flow:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>deploy:<br>\u00a0\u00a0image: amazon\/aws-cli:2<br>\u00a0<br>\u00a0\u00a0id_tokens:<br>\u00a0\u00a0\u00a0\u00a0AWS_ID_TOKEN:<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0aud: sts.amazonaws.com<br>\u00a0<br>\u00a0\u00a0variables:<br>\u00a0\u00a0\u00a0\u00a0AWS_DEFAULT_REGION: ap-south-1<br>\u00a0\u00a0\u00a0\u00a0AWS_ROLE_ARN: arn:aws:iam::123456789012:role\/gitlab-backend-deploy<br>\u00a0<br>\u00a0\u00a0script:<br>\u00a0\u00a0\u00a0\u00a0&#8211; |<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0CREDS=$(aws sts assume-role-with-web-identity \\<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211;role-arn &#8220;$AWS_ROLE_ARN&#8221; \\<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211;role-session-name &#8220;gitlab-deploy-$CI_PIPELINE_ID&#8221; \\<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211;web-identity-token &#8220;$AWS_ID_TOKEN&#8221; \\<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211;duration-seconds 3600 \\<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211;query &#8216;Credentials.[AccessKeyId,SecretAccessKey,SessionToken]&#8217; \\<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&#8211;output text)<br>\u00a0<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0export AWS_ACCESS_KEY_ID=(echo&#8221;$CREDS&#8221; | awk &#8216;{print $1}&#8217;)<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0export AWS_SECRET_ACCESS_KEY=$(echo &#8220;$CREDS&#8221; | awk &#8216;{print $2}&#8217;)<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0export AWS_SESSION_TOKEN=$(echo &#8220;$CREDS&#8221; | awk &#8216;{print $3}&#8217;)<br>\u00a0<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0aws sts get-caller-identity<br>\u00a0<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0# Add the actual deployment commands here<br>\u00a0<br>\u00a0\u00a0rules:<br>\u00a0\u00a0\u00a0\u00a0&#8211; if: &#8216;$CI_COMMIT_BRANCH == &#8220;main&#8221;&#8216;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>This example demonstrates how a pipeline can authenticate without storing permanent AWS access keys. In production, the image should be pinned to an approved version or digest, credentials must never be printed to logs, and the pipeline should use protected branches and appropriate deployment controls.<\/p>\n\n\n\n<p>The branch rule controls when the job runs, while the AWS IAM trust policy independently verifies which identity is permitted to assume the role.<\/p>\n\n\n\n<p>For example, if a pipeline only needs to update a specific application and invalidate a CloudFront distribution, we grant only the required permissions for those resources rather than giving the pipeline administrator-level access.<\/p>\n\n\n\n<p>This follows a simple principle:<\/p>\n\n\n\n<p>A deployment workload should have exactly the permissions required to perform its job not the permissions available to an administrator.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What We Actually Changed<\/strong><\/h2>\n\n\n\n<p>Rather than treating Zero Trust as a theoretical security model, we applied it directly to the deployment workflow.<\/p>\n\n\n\n<p>Previously, the pipeline depended on credentials that could remain valid until they were manually rotated.<\/p>\n\n\n\n<p>With the OIDC-based approach:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>GitLab CI\/CD requests an OIDC identity token.<\/li>\n\n\n\n<li>AWS validates the token against the configured identity provider and IAM trust policy.<\/li>\n\n\n\n<li>The pipeline assumes a dedicated IAM role.<\/li>\n\n\n\n<li>AWS STS issues temporary credentials.<\/li>\n\n\n\n<li>The role is restricted to the resources and actions required for the deployment.<\/li>\n\n\n\n<li>The temporary credentials expire automatically.<\/li>\n<\/ol>\n\n\n\n<p>This reduces the operational overhead associated with manually rotating long-lived access keys.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Practical Challenge<\/strong><\/h2>\n\n\n\n<p>The transition was not simply a matter of enabling OIDC and changing a configuration.<\/p>\n\n\n\n<p>We had to review the existing deployment process and identify what the pipeline actually needed to do. Some permissions that had accumulated over time were no longer necessary, while others were required only for specific deployment stages.<\/p>\n\n\n\n<p>We therefore reviewed the pipeline actions and mapped them to the required AWS permissions before creating the final IAM policy.<\/p>\n\n\n\n<p>This is where the Zero Trust mindset became useful. Instead of starting with:<\/p>\n\n\n\n<p>&#8220;What access can we give this pipeline?&#8221;<\/p>\n\n\n\n<p>we started with:<\/p>\n\n\n\n<p>&#8220;What operations does this pipeline actually perform, and what is the minimum access required for those operations?&#8221;<\/p>\n\n\n\n<p>That change in approach helped us reduce unnecessary permissions without disrupting the deployment process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The Result<\/strong><\/h2>\n\n\n\n<p>The implementation gives us more than a security improvement.<\/p>\n\n\n\n<p>By replacing long-lived AWS credentials with OIDC-based temporary credentials, we can reduce the number of persistent secrets that need to be stored and rotated.<\/p>\n\n\n\n<p>At the same time, separating deployment permissions into a dedicated IAM role makes the access model easier to understand and audit.<\/p>\n\n\n\n<p>The resulting architecture provides:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No need to store long-lived AWS access keys in the CI\/CD workflow.<\/li>\n\n\n\n<li>Temporary credentials for deployment workloads.<\/li>\n\n\n\n<li>Dedicated IAM roles instead of shared administrative credentials.<\/li>\n\n\n\n<li>More granular permissions.<\/li>\n\n\n\n<li>Lower credential-rotation overhead.<\/li>\n\n\n\n<li>A clearer audit trail of which workload accessed AWS and under which role.<\/li>\n<\/ul>\n\n\n\n<p>The important lesson is that Zero Trust does not require us to introduce another security product. It requires us to rethink how identity, permissions, and access are designed into the deployment process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Zero Trust as an Engineering Mindset<\/strong><\/h2>\n\n\n\n<p>This experience changed how we approached security in our DevOps workflows.<\/p>\n\n\n\n<p>Instead of trusting something because it was &#8220;inside&#8221; our infrastructure or because it belonged to our CI\/CD system, we verified its identity and explicitly defined what it was allowed to access.<\/p>\n\n\n\n<p>Don&#8217;t trust based on location.<\/p>\n\n\n\n<p>Trust based on verified identity, explicit authorization, and demonstrated necessity.<\/p>\n\n\n\n<p>For DevOps engineers, that is what Zero Trust looks like in practice: not a single tool or product, but a collection of engineering decisions that continuously verify who or what is requesting access, what they need, and how long that access should exist.<\/p>\n\n\n\n                \n                    <!--begin code -->\n\n                    \n                    <div class=\"pp-multiple-authors-boxes-wrapper pp-multiple-authors-wrapper pp-multiple-authors-layout-boxed multiple-authors-target-shortcode box-post-id-4414 box-instance-id-1 ppma_boxes_4414\"\n                    data-post_id=\"4414\"\n                    data-instance_id=\"1\"\n                    data-additional_class=\"pp-multiple-authors-layout-boxed.multiple-authors-target-shortcode\"\n                    data-original_class=\"pp-multiple-authors-boxes-wrapper pp-multiple-authors-wrapper box-post-id-4414 box-instance-id-1\">\n                                                                                    <h2 class=\"widget-title box-header-title\">Author<\/h2>\n                                                                            <span class=\"ppma-layout-prefix\"><\/span>\n                        <div class=\"ppma-author-category-wrap\">\n                                                                                                                                    <span class=\"ppma-category-group ppma-category-group-1 category-index-0\">\n                                                                                                                        <ul class=\"pp-multiple-authors-boxes-ul author-ul-0\">\n                                                                                                                                                                                                                                                                                                                                                            \n                                                                                                                    <li class=\"pp-multiple-authors-boxes-li author_index_0 author_jibin-koshy has-avatar\">\n                                                                                                                                                                                    <div class=\"pp-author-boxes-avatar\">\n                                                                    <div class=\"avatar-image\">\n                                                                                                                                                                                                                <img alt='' src='https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg' srcset='https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg' class='multiple_authors_guest_author_avatar avatar' height='80' width='80'\/>                                                                                                                                                                                                            <\/div>\n                                                                                                                                    <\/div>\n                                                            \n                                                            <div class=\"pp-author-boxes-avatar-details\">\n                                                                <div class=\"pp-author-boxes-name multiple-authors-name\"><a href=\"https:\/\/www.xminds.com\/resources\/author\/jibin-koshy\/\" rel=\"author\" title=\"Jibin Koshy\" class=\"author url fn\">Jibin Koshy<\/a><\/div>                                                                                                                                                                                                    \n                                                                                                                                            <p class=\"pp-author-boxes-description multiple-authors-description author-description-0\">\n                                                                                                                                                    <p><strong>Jibin Koshy<\/strong> is a DevOps &amp; Cloud Engineer with 4.5+ years of experience in DevOps, AWS, Linux system administration, CI\/CD, cloud infrastructure, and DevSecOps. He has strong hands-on expertise in AWS, Kubernetes, Docker, Terraform, Ansible, Jenkins, GitLab CI, Prometheus, and Grafana. His experience includes automating deployments, managing containerized applications, integrating security practices into CI\/CD pipelines, optimizing infrastructure, and troubleshooting complex production environments to ensure reliable and scalable systems.<\/p>\n<p><span data-teams=\"true\">\u00a0<\/span><\/p>\n                                                                                                                                                <\/p>\n                                                                                                                                                                                                    \n                                                                                                                                \n                                                                                                                            <\/div>\n                                                                                                                                                                                                                        <\/li>\n                                                                                                                                                                                                                                                                                        <\/ul>\n                                                                            <\/span>\n                                                                                                                        <\/div>\n                        <span class=\"ppma-layout-suffix\"><\/span>\n                                            <\/div>\n                    <!--end code -->\n                    \n                \n                            \n        \n","protected":false},"excerpt":{"rendered":"<p>Zero Trust has become a major cybersecurity concept, but its value becomes clearer when applied to a real engineering problem. In a recent client project involving backend microservices, we identified security risks in how our CI\/CD pipelines accessed AWS resources. The existing setup relied on long-lived AWS access keys stored as CI\/CD secrets. Although this [&hellip;]<\/p>\n","protected":false},"author":123488,"featured_media":4855,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[678],"ppma_author":[730],"class_list":["post-4852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-show-meta"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Zero Trust in DevSecOps: AWS OIDC Authentication<\/title>\n<meta name=\"description\" content=\"Zero Trust in DevSecOps improves AWS security using OIDC authentication, temporary credentials &amp; least-privilege IAM roles in CI\/CD pipelines.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zero Trust in DevSecOps: AWS OIDC Authentication\" \/>\n<meta property=\"og:description\" content=\"Zero Trust in DevSecOps improves AWS security using OIDC authentication, temporary credentials &amp; least-privilege IAM roles in CI\/CD pipelines.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/\" \/>\n<meta property=\"og:site_name\" content=\"Xminds Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Xminds.Solutions\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-09T10:56:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T11:18:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1360\" \/>\n\t<meta property=\"og:image:height\" content=\"912\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jibin Koshy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Xminds\" \/>\n<meta name=\"twitter:site\" content=\"@Xminds\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jibin Koshy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/\",\"url\":\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/\",\"name\":\"Zero Trust in DevSecOps: AWS OIDC Authentication\",\"isPartOf\":{\"@id\":\"https:\/\/www.xminds.com\/resources\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png\",\"datePublished\":\"2026-10-09T10:56:00+00:00\",\"dateModified\":\"2026-10-09T11:18:26+00:00\",\"author\":{\"@id\":\"https:\/\/www.xminds.com\/resources\/#\/schema\/person\/a8fb56b244582f3dc85786ee9142cc00\"},\"description\":\"Zero Trust in DevSecOps improves AWS security using OIDC authentication, temporary credentials & least-privilege IAM roles in CI\/CD pipelines.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#primaryimage\",\"url\":\"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png\",\"contentUrl\":\"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png\",\"width\":1360,\"height\":912,\"caption\":\"The DevSecOps Mindset: Zero Trust in Practice\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.xminds.com\/resources\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The DevSecOps Mindset: Zero Trust in Practice\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.xminds.com\/resources\/#website\",\"url\":\"https:\/\/www.xminds.com\/resources\/\",\"name\":\"Xminds Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.xminds.com\/resources\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.xminds.com\/resources\/#\/schema\/person\/a8fb56b244582f3dc85786ee9142cc00\",\"name\":\"Jibin Koshy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.xminds.com\/resources\/#\/schema\/person\/image\/dcbff50842845cdd87e4d9d4e826d776\",\"url\":\"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg\",\"contentUrl\":\"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg\",\"caption\":\"Jibin Koshy\"},\"description\":\"Jibin Koshy is a DevOps &amp; Cloud Engineer with 4.5+ years of experience in DevOps, AWS, Linux system administration, CI\/CD, cloud infrastructure, and DevSecOps. He has strong hands-on expertise in AWS, Kubernetes, Docker, Terraform, Ansible, Jenkins, GitLab CI, Prometheus, and Grafana. His experience includes automating deployments, managing containerized applications, integrating security practices into CI\/CD pipelines, optimizing infrastructure, and troubleshooting complex production environments to ensure reliable and scalable systems. \u00a0\",\"sameAs\":[\"https:\/\/www.xminds.com\/\"],\"url\":\"https:\/\/www.xminds.com\/resources\/author\/jibin-koshy\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Zero Trust in DevSecOps: AWS OIDC Authentication","description":"Zero Trust in DevSecOps improves AWS security using OIDC authentication, temporary credentials & least-privilege IAM roles in CI\/CD pipelines.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/","og_locale":"en_US","og_type":"article","og_title":"Zero Trust in DevSecOps: AWS OIDC Authentication","og_description":"Zero Trust in DevSecOps improves AWS security using OIDC authentication, temporary credentials & least-privilege IAM roles in CI\/CD pipelines.","og_url":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/","og_site_name":"Xminds Blog","article_publisher":"https:\/\/www.facebook.com\/Xminds.Solutions\/","article_published_time":"2026-10-09T10:56:00+00:00","article_modified_time":"2026-10-09T11:18:26+00:00","og_image":[{"width":1360,"height":912,"url":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png","type":"image\/png"}],"author":"Jibin Koshy","twitter_card":"summary_large_image","twitter_creator":"@Xminds","twitter_site":"@Xminds","twitter_misc":{"Written by":"Jibin Koshy","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/","url":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/","name":"Zero Trust in DevSecOps: AWS OIDC Authentication","isPartOf":{"@id":"https:\/\/www.xminds.com\/resources\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#primaryimage"},"image":{"@id":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#primaryimage"},"thumbnailUrl":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png","datePublished":"2026-10-09T10:56:00+00:00","dateModified":"2026-10-09T11:18:26+00:00","author":{"@id":"https:\/\/www.xminds.com\/resources\/#\/schema\/person\/a8fb56b244582f3dc85786ee9142cc00"},"description":"Zero Trust in DevSecOps improves AWS security using OIDC authentication, temporary credentials & least-privilege IAM roles in CI\/CD pipelines.","breadcrumb":{"@id":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#primaryimage","url":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png","contentUrl":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/image-19-1.png","width":1360,"height":912,"caption":"The DevSecOps Mindset: Zero Trust in Practice"},{"@type":"BreadcrumbList","@id":"https:\/\/www.xminds.com\/resources\/the-devsecops-mindset-zero-trust-in-practice\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.xminds.com\/resources\/"},{"@type":"ListItem","position":2,"name":"The DevSecOps Mindset: Zero Trust in Practice"}]},{"@type":"WebSite","@id":"https:\/\/www.xminds.com\/resources\/#website","url":"https:\/\/www.xminds.com\/resources\/","name":"Xminds Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.xminds.com\/resources\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.xminds.com\/resources\/#\/schema\/person\/a8fb56b244582f3dc85786ee9142cc00","name":"Jibin Koshy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.xminds.com\/resources\/#\/schema\/person\/image\/dcbff50842845cdd87e4d9d4e826d776","url":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg","contentUrl":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg","caption":"Jibin Koshy"},"description":"Jibin Koshy is a DevOps &amp; Cloud Engineer with 4.5+ years of experience in DevOps, AWS, Linux system administration, CI\/CD, cloud infrastructure, and DevSecOps. He has strong hands-on expertise in AWS, Kubernetes, Docker, Terraform, Ansible, Jenkins, GitLab CI, Prometheus, and Grafana. His experience includes automating deployments, managing containerized applications, integrating security practices into CI\/CD pipelines, optimizing infrastructure, and troubleshooting complex production environments to ensure reliable and scalable systems. \u00a0","sameAs":["https:\/\/www.xminds.com\/"],"url":"https:\/\/www.xminds.com\/resources\/author\/jibin-koshy\/"}]}},"authors":[{"term_id":730,"user_id":123488,"is_guest":0,"slug":"jibin-koshy","display_name":"Jibin Koshy","avatar_url":{"url":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg","url2x":"https:\/\/www.xminds.com\/resources\/wp-content\/uploads\/IMG-20241021-WA0213-1.jpg"},"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/posts\/4852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/users\/123488"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/comments?post=4852"}],"version-history":[{"count":4,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/posts\/4852\/revisions"}],"predecessor-version":[{"id":4858,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/posts\/4852\/revisions\/4858"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/media\/4855"}],"wp:attachment":[{"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/media?parent=4852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/categories?post=4852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/tags?post=4852"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.xminds.com\/resources\/wp-json\/wp\/v2\/ppma_author?post=4852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}