{"id":509,"date":"2026-07-11T05:55:00","date_gmt":"2026-07-11T05:55:00","guid":{"rendered":"https:\/\/harshad-sonawane.com\/blog\/?p=509"},"modified":"2026-05-17T05:41:10","modified_gmt":"2026-05-17T05:41:10","slug":"secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure","status":"publish","type":"post","link":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/","title":{"rendered":"Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure"},"content":{"rendered":"<p data-start=\"65\" data-end=\"375\">Managing secrets securely is one of the most critical responsibilities in modern cloud-native applications. API keys, database passwords, OAuth tokens, encryption keys, and certificates are frequently used across <a href=\"https:\/\/harshad-sonawane.com\/blog\/eventual-consistency-distributed-java-systems\/\">distributed systems<\/a>, and exposing even a single credential can lead to severe security incidents.<\/p>\n<p data-start=\"377\" data-end=\"604\">Many organizations still rely on static credentials stored in configuration files or environment variables for long periods. This creates major risks because compromised secrets often remain active for months without detection.<\/p>\n<p data-start=\"606\" data-end=\"939\">Secret rotation solves this problem by periodically replacing sensitive credentials automatically or semi-automatically. Combined with <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/audit-logging-in-java-microservices-techniques-and-compliance-tips\/\">Spring Boot<\/a><\/span><\/span> and cloud-native secret managers from <a href=\"https:\/\/harshad-sonawane.com\/blog\/choosing-right-cloud-database-rds-dynamodb-aurora-documentdb\/\">AWS<\/a>, GCP, and Azure, organizations can significantly improve application security, <a href=\"https:\/\/harshad-sonawane.com\/blog\/two-factor-authentication-java-applications\/\">compliance<\/a>, and operational resilience.<\/p>\n<p data-start=\"941\" data-end=\"1204\">In this blog, we will explore secrets rotation strategies in Spring Boot applications using major cloud providers, implementation patterns, architecture considerations, runtime refresh mechanisms, <a href=\"https:\/\/harshad-sonawane.com\/blog\/building-multi-region-spring-boot-systems-for-global-availability\/\">Kubernetes<\/a> integration, monitoring, and production best practices.<\/p>\n<hr data-start=\"1206\" data-end=\"1209\" \/>\n<h1 data-section-id=\"1tckmf4\" data-start=\"1211\" data-end=\"1242\">Understanding Secret Rotation<\/h1>\n<p data-start=\"1244\" data-end=\"1343\">Secret rotation is the process of replacing credentials periodically to minimize security exposure.<\/p>\n<p data-start=\"1345\" data-end=\"1382\">Examples of rotating secrets include:<\/p>\n<ul data-start=\"1384\" data-end=\"1498\">\n<li data-section-id=\"14fj22p\" data-start=\"1384\" data-end=\"1404\">Database passwords<\/li>\n<li data-section-id=\"1cgd0gk\" data-start=\"1405\" data-end=\"1415\">API keys<\/li>\n<li data-section-id=\"174wu1i\" data-start=\"1416\" data-end=\"1434\">JWT signing keys<\/li>\n<li data-section-id=\"1uu3kjq\" data-start=\"1435\" data-end=\"1457\">SSL\/TLS certificates<\/li>\n<li data-section-id=\"anbqz7\" data-start=\"1458\" data-end=\"1480\">OAuth client secrets<\/li>\n<li data-section-id=\"1iy6jr7\" data-start=\"1481\" data-end=\"1498\">Encryption keys<\/li>\n<\/ul>\n<p data-start=\"1500\" data-end=\"1611\">Instead of using one static credential indefinitely, systems generate and distribute new secrets automatically.<\/p>\n<hr data-start=\"1613\" data-end=\"1616\" \/>\n<h1 data-section-id=\"1ufk3sa\" data-start=\"1618\" data-end=\"1647\">Why Secret Rotation Matters<\/h1>\n<p data-start=\"1649\" data-end=\"1700\">Static secrets create multiple security challenges.<\/p>\n<h2 data-section-id=\"1cx1m8e\" data-start=\"1702\" data-end=\"1723\">Credential Leakage<\/h2>\n<p data-start=\"1725\" data-end=\"1763\">Secrets may accidentally leak through:<\/p>\n<ul data-start=\"1765\" data-end=\"1868\">\n<li data-section-id=\"gy9fss\" data-start=\"1765\" data-end=\"1791\">Source code repositories<\/li>\n<li data-section-id=\"1j3uj27\" data-start=\"1792\" data-end=\"1798\">Logs<\/li>\n<li data-section-id=\"682ye3\" data-start=\"1799\" data-end=\"1816\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/technical-debt-assessment-legacy-java-systems\/\">CI\/CD<\/a> pipelines<\/li>\n<li data-section-id=\"1ydb4ou\" data-start=\"1817\" data-end=\"1837\">Shared screenshots<\/li>\n<li data-section-id=\"5zc1h0\" data-start=\"1838\" data-end=\"1868\">Misconfigured infrastructure<\/li>\n<\/ul>\n<h2 data-section-id=\"1dm4kau\" data-start=\"1870\" data-end=\"1888\">Insider Threats<\/h2>\n<p data-start=\"1890\" data-end=\"1946\">Long-lived credentials increase internal security risks.<\/p>\n<h2 data-section-id=\"zzlvbo\" data-start=\"1948\" data-end=\"1974\">Compliance Requirements<\/h2>\n<p data-start=\"1976\" data-end=\"1994\">Standards such as:<\/p>\n<ul data-start=\"1996\" data-end=\"2032\">\n<li data-section-id=\"1kmqahi\" data-start=\"1996\" data-end=\"2005\">PCI DSS<\/li>\n<li data-section-id=\"16p3oah\" data-start=\"2006\" data-end=\"2013\">HIPAA<\/li>\n<li data-section-id=\"1j4cryd\" data-start=\"2014\" data-end=\"2020\">SOC2<\/li>\n<li data-section-id=\"i2ml61\" data-start=\"2021\" data-end=\"2032\">ISO 27001<\/li>\n<\/ul>\n<p data-start=\"2034\" data-end=\"2073\">often require periodic secret rotation.<\/p>\n<h2 data-section-id=\"1tavqwh\" data-start=\"2075\" data-end=\"2098\">Reduced Blast Radius<\/h2>\n<p data-start=\"2100\" data-end=\"2165\">Short-lived credentials reduce the impact of compromised secrets.<\/p>\n<hr data-start=\"2167\" data-end=\"2170\" \/>\n<h1 data-section-id=\"4ky263\" data-start=\"2172\" data-end=\"2204\">Common Secret Storage Mistakes<\/h1>\n<p data-start=\"2206\" data-end=\"2250\">Many systems still store secrets insecurely.<\/p>\n<p data-start=\"2252\" data-end=\"2269\">Examples include:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>application.properties<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2319\" data-end=\"2322\">or:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>spring.datasource.password=mysecretpassword<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2393\" data-end=\"2440\">This approach is dangerous because secrets may:<\/p>\n<ul data-start=\"2442\" data-end=\"2524\">\n<li data-section-id=\"4clf7k\" data-start=\"2442\" data-end=\"2465\">Appear in Git history<\/li>\n<li data-section-id=\"koee0y\" data-start=\"2466\" data-end=\"2491\">Leak during deployments<\/li>\n<li data-section-id=\"1pghcq3\" data-start=\"2492\" data-end=\"2524\">Be exposed in container images<\/li>\n<\/ul>\n<hr data-start=\"2526\" data-end=\"2529\" \/>\n<h1 data-section-id=\"18gotrd\" data-start=\"2531\" data-end=\"2570\">Modern Secret Management Architecture<\/h1>\n<p data-start=\"2572\" data-end=\"2625\">A secure secret management system typically includes:<\/p>\n<ol data-start=\"2627\" data-end=\"2780\">\n<li data-section-id=\"1tj3llr\" data-start=\"2627\" data-end=\"2644\">Secret Manager<\/li>\n<li data-section-id=\"ymd3u6\" data-start=\"2645\" data-end=\"2665\">Identity Provider<\/li>\n<li data-section-id=\"194r5wa\" data-start=\"2666\" data-end=\"2684\">Access Policies<\/li>\n<li data-section-id=\"gqc0hf\" data-start=\"2685\" data-end=\"2710\">Secret Rotation Engine<\/li>\n<li data-section-id=\"1xvm3ao\" data-start=\"2711\" data-end=\"2727\">Audit Logging<\/li>\n<li data-section-id=\"pi2ghs\" data-start=\"2728\" data-end=\"2755\">Runtime Secret Injection<\/li>\n<li data-section-id=\"h4okkm\" data-start=\"2756\" data-end=\"2780\">Monitoring and Alerts<\/li>\n<\/ol>\n<hr data-start=\"2782\" data-end=\"2785\" \/>\n<h1 data-section-id=\"7qiefi\" data-start=\"2787\" data-end=\"2805\">Technology Stack<\/h1>\n<p data-start=\"2807\" data-end=\"2844\">For this implementation, we will use:<\/p>\n<ul data-start=\"2846\" data-end=\"3135\">\n<li data-section-id=\"2kc2rb\" data-start=\"2846\" data-end=\"2855\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/reduce-cloud-costs-java-applications\/\">Java<\/a> 21<\/li>\n<li data-section-id=\"lyf7sl\" data-start=\"2856\" data-end=\"2895\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Spring Boot<\/span><\/span><\/li>\n<li data-section-id=\"1ksq1c3\" data-start=\"2896\" data-end=\"2951\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Amazon Web Services<\/span><\/span> Secrets Manager<\/li>\n<li data-section-id=\"oewx4g\" data-start=\"2952\" data-end=\"3006\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Google Cloud Platform<\/span><\/span> Secret Manager<\/li>\n<li data-section-id=\"s4e388\" data-start=\"3007\" data-end=\"3056\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Microsoft Azure<\/span><\/span> Key Vault<\/li>\n<li data-section-id=\"1vumrmw\" data-start=\"3057\" data-end=\"3071\">Spring Cloud<\/li>\n<li data-section-id=\"1u6gra4\" data-start=\"3072\" data-end=\"3080\">Docker<\/li>\n<li data-section-id=\"1hb2fca\" data-start=\"3081\" data-end=\"3093\">Kubernetes<\/li>\n<li data-section-id=\"lgsnml\" data-start=\"3094\" data-end=\"3112\">Vault (optional)<\/li>\n<li data-section-id=\"961ble\" data-start=\"3113\" data-end=\"3125\"><a href=\"https:\/\/harshad-sonawane.com\/blog\/monitoring-java-applications-prometheus-grafana-kubernetes\/\">Prometheus<\/a><\/li>\n<li data-section-id=\"wkmoms\" data-start=\"3126\" data-end=\"3135\">Grafana<\/li>\n<\/ul>\n<hr data-start=\"3137\" data-end=\"3140\" \/>\n<h1 data-section-id=\"4h466e\" data-start=\"3142\" data-end=\"3168\">Types of Secret Rotation<\/h1>\n<hr data-start=\"3170\" data-end=\"3173\" \/>\n<h1 data-section-id=\"1ddealk\" data-start=\"3175\" data-end=\"3192\">Manual Rotation<\/h1>\n<p data-start=\"3194\" data-end=\"3233\">Administrators rotate secrets manually.<\/p>\n<h2 data-section-id=\"g2he8t\" data-start=\"3235\" data-end=\"3246\">Problems<\/h2>\n<ul data-start=\"3248\" data-end=\"3304\">\n<li data-section-id=\"16twipn\" data-start=\"3248\" data-end=\"3261\">Error-prone<\/li>\n<li data-section-id=\"387zu7\" data-start=\"3262\" data-end=\"3276\">Inconsistent<\/li>\n<li data-section-id=\"1j4dm33\" data-start=\"3277\" data-end=\"3283\">Slow<\/li>\n<li data-section-id=\"1ich3f8\" data-start=\"3284\" data-end=\"3304\">Difficult to audit<\/li>\n<\/ul>\n<hr data-start=\"3306\" data-end=\"3309\" \/>\n<h1 data-section-id=\"ic2d2r\" data-start=\"3311\" data-end=\"3331\">Scheduled Rotation<\/h1>\n<p data-start=\"3333\" data-end=\"3382\">Secrets rotate automatically on a fixed schedule.<\/p>\n<p data-start=\"3384\" data-end=\"3392\">Example:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>Rotate database password every 30 days<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3458\" data-end=\"3461\" \/>\n<h1 data-section-id=\"1l05cfl\" data-start=\"3463\" data-end=\"3486\">Event-Driven Rotation<\/h1>\n<p data-start=\"3488\" data-end=\"3528\">Secrets rotate based on security events.<\/p>\n<p data-start=\"3530\" data-end=\"3539\">Examples:<\/p>\n<ul data-start=\"3541\" data-end=\"3625\">\n<li data-section-id=\"e83euu\" data-start=\"3541\" data-end=\"3571\">Credential exposure detected<\/li>\n<li data-section-id=\"tf55un\" data-start=\"3572\" data-end=\"3594\">Employee offboarding<\/li>\n<li data-section-id=\"e8qwwe\" data-start=\"3595\" data-end=\"3625\">Unauthorized access attempts<\/li>\n<\/ul>\n<hr data-start=\"3627\" data-end=\"3630\" \/>\n<h1 data-section-id=\"2hpi1i\" data-start=\"3632\" data-end=\"3649\">Dynamic Secrets<\/h1>\n<p data-start=\"3651\" data-end=\"3695\">Secrets are generated temporarily on demand.<\/p>\n<p data-start=\"3697\" data-end=\"3705\">Example:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>Temporary database credential valid for 15 minutes<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"3783\" data-end=\"3839\">Dynamic secrets are considered the most secure approach.<\/p>\n<hr data-start=\"3841\" data-end=\"3844\" \/>\n<h1 data-section-id=\"1bmyicr\" data-start=\"3846\" data-end=\"3879\">AWS Secrets Manager Integration<\/h1>\n<p data-start=\"3881\" data-end=\"3967\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">AWS Secrets Manager<\/span><\/span> provides automated secret rotation capabilities.<\/p>\n<hr data-start=\"3969\" data-end=\"3972\" \/>\n<h1 data-section-id=\"dei097\" data-start=\"3974\" data-end=\"3999\">Adding AWS Dependencies<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037co\">&lt;dependency&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;groupId&gt;<\/span><span>io.awspring.cloud<\/span><span class=\"\u037co\">&lt;\/groupId&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;artifactId&gt;<\/span>\n<span>        spring-cloud-aws-starter-secrets-manager<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;\/artifactId&gt;<\/span>\n<span class=\"\u037co\">&lt;\/dependency&gt;<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"4177\" data-end=\"4180\" \/>\n<h1 data-section-id=\"1nx8j0s\" data-start=\"4182\" data-end=\"4207\">Configuring Spring Boot<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>spring:<\/span>\n<span>  config:<\/span>\n<span>    import: aws-secretsmanager:\/prod\/app<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"4293\" data-end=\"4354\">Secrets are automatically loaded into the Spring environment.<\/p>\n<hr data-start=\"4356\" data-end=\"4359\" \/>\n<h1 data-section-id=\"1172h53\" data-start=\"4361\" data-end=\"4380\">Accessing Secrets<\/h1>\n<p data-start=\"4382\" data-end=\"4397\">Example secret:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>{<\/span>\n<span>  \"db.username\": <\/span><span class=\"\u037ck\">\"appuser\"<\/span><span>,<\/span>\n<span>  \"db.password\": <\/span><span class=\"\u037ck\">\"securepassword\"<\/span>\n<span>}<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"4490\" data-end=\"4496\">Usage:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>@<\/span><span class=\"\u037cm\">Value<\/span><span>(<\/span><span class=\"\u037ck\">\"${db.password}\"<\/span><span>)<\/span>\n<span class=\"\u037cg\">private<\/span><span> <\/span><span class=\"\u037cm\">String<\/span><span> <\/span><span class=\"\u037cm\">databasePassword<\/span><span>;<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"4581\" data-end=\"4584\" \/>\n<h1 data-section-id=\"1icr6x6\" data-start=\"4586\" data-end=\"4610\">AWS Automatic Rotation<\/h1>\n<p data-start=\"4612\" data-end=\"4657\">AWS supports Lambda-based rotation workflows.<\/p>\n<p data-start=\"4659\" data-end=\"4676\">Rotation process:<\/p>\n<ol data-start=\"4678\" data-end=\"4798\">\n<li data-section-id=\"1htelrd\" data-start=\"4678\" data-end=\"4702\">Create new credential<\/li>\n<li data-section-id=\"tejs78\" data-start=\"4703\" data-end=\"4727\">Update target service<\/li>\n<li data-section-id=\"rgph\" data-start=\"4728\" data-end=\"4750\">Validate credential<\/li>\n<li data-section-id=\"1r3le9z\" data-start=\"4751\" data-end=\"4773\">Promote new version<\/li>\n<li data-section-id=\"gtrbj\" data-start=\"4774\" data-end=\"4798\">Retire old credential<\/li>\n<\/ol>\n<p data-start=\"4800\" data-end=\"4836\">This enables zero-downtime rotation.<\/p>\n<hr data-start=\"4838\" data-end=\"4841\" \/>\n<h1 data-section-id=\"1apwmmh\" data-start=\"4843\" data-end=\"4875\">GCP Secret Manager Integration<\/h1>\n<p data-start=\"4877\" data-end=\"4980\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Google Cloud Secret Manager<\/span><\/span> provides centralized secret storage and IAM-based access control.<\/p>\n<hr data-start=\"4982\" data-end=\"4985\" \/>\n<h1 data-section-id=\"ndurko\" data-start=\"4987\" data-end=\"5005\">Maven Dependency<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037co\">&lt;dependency&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;groupId&gt;<\/span><span>com.google.cloud<\/span><span class=\"\u037co\">&lt;\/groupId&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;artifactId&gt;<\/span><span>spring-cloud-gcp-starter-secretmanager<\/span><span class=\"\u037co\">&lt;\/artifactId&gt;<\/span>\n<span class=\"\u037co\">&lt;\/dependency&gt;<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"5166\" data-end=\"5169\" \/>\n<h1 data-section-id=\"o0gzkm\" data-start=\"5171\" data-end=\"5186\">Configuration<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>spring:<\/span>\n<span>  config:<\/span>\n<span>    import: sm:\/\/<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"5249\" data-end=\"5252\" \/>\n<h1 data-section-id=\"1172h53\" data-start=\"5254\" data-end=\"5273\">Accessing Secrets<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>@<\/span><span class=\"\u037cm\">Value<\/span><span>(<\/span><span class=\"\u037ck\">\"${database-password}\"<\/span><span>)<\/span>\n<span class=\"\u037cg\">private<\/span><span> <\/span><span class=\"\u037cm\">String<\/span><span> <\/span><span class=\"\u037cm\">password<\/span><span>;<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"5356\" data-end=\"5359\" \/>\n<h1 data-section-id=\"1c23zjx\" data-start=\"5361\" data-end=\"5384\">GCP Rotation Strategy<\/h1>\n<p data-start=\"5386\" data-end=\"5460\">GCP does not provide built-in automated rotation like AWS Lambda rotation.<\/p>\n<p data-start=\"5462\" data-end=\"5488\">Common approaches include:<\/p>\n<ul data-start=\"5490\" data-end=\"5577\">\n<li data-section-id=\"zhna7i\" data-start=\"5490\" data-end=\"5507\">Cloud Scheduler<\/li>\n<li data-section-id=\"1xldyyw\" data-start=\"5508\" data-end=\"5525\">Cloud Functions<\/li>\n<li data-section-id=\"wfrd5u\" data-start=\"5526\" data-end=\"5548\">CI\/CD-based rotation<\/li>\n<li data-section-id=\"1w7l0pd\" data-start=\"5549\" data-end=\"5577\">External Vault integration<\/li>\n<\/ul>\n<hr data-start=\"5579\" data-end=\"5582\" \/>\n<h1 data-section-id=\"1mjdfd8\" data-start=\"5584\" data-end=\"5613\">Azure Key Vault Integration<\/h1>\n<p data-start=\"5615\" data-end=\"5713\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Azure Key Vault<\/span><\/span> provides secure storage for secrets, certificates, and keys.<\/p>\n<hr data-start=\"5715\" data-end=\"5718\" \/>\n<h1 data-section-id=\"ndurko\" data-start=\"5720\" data-end=\"5738\">Maven Dependency<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037co\">&lt;dependency&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;groupId&gt;<\/span><span>com.azure.spring<\/span><span class=\"\u037co\">&lt;\/groupId&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;artifactId&gt;<\/span>\n<span>        spring-cloud-azure-starter-keyvault-secrets<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;\/artifactId&gt;<\/span>\n<span class=\"\u037co\">&lt;\/dependency&gt;<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"5918\" data-end=\"5921\" \/>\n<h1 data-section-id=\"1vtprht\" data-start=\"5923\" data-end=\"5950\">Spring Boot Configuration<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>spring:<\/span>\n<span>  cloud:<\/span>\n<span>    azure:<\/span>\n<span>      keyvault:<\/span>\n<span>        secret:<\/span>\n<span>          endpoint:<\/span>\n<span>            https:\/\/app-vault.vault.azure.net\/<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"6104\" data-end=\"6107\" \/>\n<h1 data-section-id=\"1pbu6fz\" data-start=\"6109\" data-end=\"6127\">Fetching Secrets<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>@<\/span><span class=\"\u037cm\">Value<\/span><span>(<\/span><span class=\"\u037ck\">\"${db-password}\"<\/span><span>)<\/span>\n<span class=\"\u037cg\">private<\/span><span> <\/span><span class=\"\u037cm\">String<\/span><span> <\/span><span class=\"\u037cm\">password<\/span><span>;<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"6204\" data-end=\"6207\" \/>\n<h1 data-section-id=\"1krjvsm\" data-start=\"6209\" data-end=\"6236\">Azure Rotation Strategies<\/h1>\n<p data-start=\"6238\" data-end=\"6267\">Azure rotation commonly uses:<\/p>\n<ul data-start=\"6269\" data-end=\"6333\">\n<li data-section-id=\"16txnk\" data-start=\"6269\" data-end=\"6286\">Azure Functions<\/li>\n<li data-section-id=\"11lrmpo\" data-start=\"6287\" data-end=\"6299\">Event Grid<\/li>\n<li data-section-id=\"1qsgj2s\" data-start=\"6300\" data-end=\"6312\">Logic Apps<\/li>\n<li data-section-id=\"1r8dwql\" data-start=\"6313\" data-end=\"6333\">Managed identities<\/li>\n<\/ul>\n<hr data-start=\"6335\" data-end=\"6338\" \/>\n<h1 data-section-id=\"17m8zh4\" data-start=\"6340\" data-end=\"6379\">Dynamic Secret Refresh in Spring Boot<\/h1>\n<p data-start=\"6381\" data-end=\"6455\">One major challenge is refreshing secrets without restarting applications.<\/p>\n<hr data-start=\"6457\" data-end=\"6460\" \/>\n<h1 data-section-id=\"k3cmal\" data-start=\"6462\" data-end=\"6490\">Using Spring Cloud Refresh<\/h1>\n<p data-start=\"6492\" data-end=\"6507\">Add dependency:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span class=\"\u037co\">&lt;dependency&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;groupId&gt;<\/span><span>org.springframework.cloud<\/span><span class=\"\u037co\">&lt;\/groupId&gt;<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;artifactId&gt;<\/span>\n<span>        spring-cloud-starter-bootstrap<\/span>\n<span>    <\/span><span class=\"\u037co\">&lt;\/artifactId&gt;<\/span>\n<span class=\"\u037co\">&lt;\/dependency&gt;<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"6683\" data-end=\"6704\">Enable refresh scope:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>@<\/span><span class=\"\u037cm\">RefreshScope<\/span>\n<span>@<\/span><span class=\"\u037cm\">Service<\/span>\n<span class=\"\u037cg\">public<\/span><span> <\/span><span class=\"\u037cg\">class<\/span><span> <\/span><span class=\"\u037cm\">DatabaseConfig<\/span><span> {<\/span>\n\n<span>    @<\/span><span class=\"\u037cm\">Value<\/span><span>(<\/span><span class=\"\u037ck\">\"${db.password}\"<\/span><span>)<\/span>\n<span>    <\/span><span class=\"\u037cg\">private<\/span><span> <\/span><span class=\"\u037cm\">String<\/span><span> <\/span><span class=\"\u037cm\">password<\/span><span>;<\/span>\n<span>}<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"6845\" data-end=\"6848\" \/>\n<h1 data-section-id=\"3ybgtb\" data-start=\"6850\" data-end=\"6878\">Triggering Runtime Refresh<\/h1>\n<p data-start=\"6880\" data-end=\"6884\">Use:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>\/actuator\/refresh<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"6929\" data-end=\"6964\">This refreshes secrets dynamically.<\/p>\n<hr data-start=\"6966\" data-end=\"6969\" \/>\n<h1 data-section-id=\"9q1tie\" data-start=\"6971\" data-end=\"6999\">Kubernetes Secret Rotation<\/h1>\n<p data-start=\"7001\" data-end=\"7059\">Kubernetes environments require additional considerations.<\/p>\n<hr data-start=\"7061\" data-end=\"7064\" \/>\n<h1 data-section-id=\"yzsrdm\" data-start=\"7066\" data-end=\"7107\">Problems with Native Kubernetes Secrets<\/h1>\n<p data-start=\"7109\" data-end=\"7140\">Default Kubernetes secrets are:<\/p>\n<ul data-start=\"7142\" data-end=\"7224\">\n<li data-section-id=\"7oihc9\" data-start=\"7142\" data-end=\"7163\">Base64 encoded only<\/li>\n<li data-section-id=\"1w9rcmj\" data-start=\"7164\" data-end=\"7190\">Not encrypted by default<\/li>\n<li data-section-id=\"uldp8t\" data-start=\"7191\" data-end=\"7224\">Difficult to rotate dynamically<\/li>\n<\/ul>\n<hr data-start=\"7226\" data-end=\"7229\" \/>\n<h1 data-section-id=\"1k8ljir\" data-start=\"7231\" data-end=\"7255\">Recommended Approaches<\/h1>\n<p data-start=\"7257\" data-end=\"7261\">Use:<\/p>\n<ul data-start=\"7263\" data-end=\"7339\">\n<li data-section-id=\"1evq4w\" data-start=\"7263\" data-end=\"7290\">External Secrets Operator<\/li>\n<li data-section-id=\"1xidwx2\" data-start=\"7291\" data-end=\"7316\">CSI Secret Store Driver<\/li>\n<li data-section-id=\"6utgzt\" data-start=\"7317\" data-end=\"7339\">Vault Agent Injector<\/li>\n<\/ul>\n<hr data-start=\"7341\" data-end=\"7344\" \/>\n<h1 data-section-id=\"zhjp3q\" data-start=\"7346\" data-end=\"7381\">Example External Secrets Operator<\/h1>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>apiVersion: external-secrets.io\/v1beta1<\/span>\n<span>kind: ExternalSecret<\/span>\n\n<span>spec:<\/span>\n<span>  refreshInterval: 1h<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"7498\" data-end=\"7538\">This synchronizes secrets automatically.<\/p>\n<hr data-start=\"7540\" data-end=\"7543\" \/>\n<h1 data-section-id=\"jykl6k\" data-start=\"7545\" data-end=\"7575\">Database Credential Rotation<\/h1>\n<p data-start=\"7577\" data-end=\"7632\">Database password rotation is particularly challenging.<\/p>\n<p data-start=\"7634\" data-end=\"7674\">The rotation process typically requires:<\/p>\n<ol data-start=\"7676\" data-end=\"7799\">\n<li data-section-id=\"x5fzk5\" data-start=\"7676\" data-end=\"7706\">Create new DB user\/password<\/li>\n<li data-section-id=\"1shsh87\" data-start=\"7707\" data-end=\"7736\">Update application secrets<\/li>\n<li data-section-id=\"dpc8bz\" data-start=\"7737\" data-end=\"7773\">Refresh application configuration<\/li>\n<li data-section-id=\"1387k80\" data-start=\"7774\" data-end=\"7799\">Revoke old credentials<\/li>\n<\/ol>\n<hr data-start=\"7801\" data-end=\"7804\" \/>\n<h1 data-section-id=\"1lchd9d\" data-start=\"7806\" data-end=\"7839\">Zero-Downtime Rotation Strategy<\/h1>\n<p data-start=\"7841\" data-end=\"7862\">Recommended approach:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1\"><\/div>\n<div class=\"relative\">\n<div class=\"pe-11 pt-3\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>Old password active<\/span>\n<span>\u2193<\/span>\n<span>New password created<\/span>\n<span>\u2193<\/span>\n<span>Application refreshes secrets<\/span>\n<span>\u2193<\/span>\n<span>Connections migrate gradually<\/span>\n<span>\u2193<\/span>\n<span>Old password revoked<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"8019\" data-end=\"8022\" \/>\n<h1 data-section-id=\"3tvx8d\" data-start=\"8024\" data-end=\"8055\">Using Connection Pools Safely<\/h1>\n<p data-start=\"8057\" data-end=\"8113\">Connection pools like HikariCP require special handling.<\/p>\n<p data-start=\"8115\" data-end=\"8137\">Recommended practices:<\/p>\n<ul data-start=\"8139\" data-end=\"8231\">\n<li data-section-id=\"5mfq3d\" data-start=\"8139\" data-end=\"8171\">Reduce max connection lifetime<\/li>\n<li data-section-id=\"grx58q\" data-start=\"8172\" data-end=\"8200\">Use graceful pool draining<\/li>\n<li data-section-id=\"1ibo4d0\" data-start=\"8201\" data-end=\"8231\">Enable connection validation<\/li>\n<\/ul>\n<p data-start=\"8233\" data-end=\"8241\">Example:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\"><\/div>\n<\/div>\n<\/div>\n<div class=\"relative\">\n<div class=\"\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" dir=\"ltr\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037cd \u037cr\">\n<div class=\"cm-scroller\">\n<pre class=\"cm-content q9tKkq_readonly m-0\"><code><span>spring:<\/span>\n<span>  datasource:<\/span>\n<span>    hikari:<\/span>\n<span>      maxLifetime: 300000<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"8328\" data-end=\"8331\" \/>\n<h1 data-section-id=\"9qyktj\" data-start=\"8333\" data-end=\"8355\">Certificate Rotation<\/h1>\n<p data-start=\"8357\" data-end=\"8405\">TLS certificates also require automated renewal.<\/p>\n<p data-start=\"8407\" data-end=\"8420\">Common tools:<\/p>\n<ul data-start=\"8422\" data-end=\"8479\">\n<li data-section-id=\"1o0iwsb\" data-start=\"8422\" data-end=\"8436\">Cert Manager<\/li>\n<li data-section-id=\"1k7igzq\" data-start=\"8437\" data-end=\"8452\">Let&#8217;s Encrypt<\/li>\n<li data-section-id=\"1o4fd3\" data-start=\"8453\" data-end=\"8458\">ACM<\/li>\n<li data-section-id=\"1lk62nr\" data-start=\"8459\" data-end=\"8479\">Azure Certificates<\/li>\n<\/ul>\n<p data-start=\"8481\" data-end=\"8540\">Automated certificate rotation prevents unexpected outages.<\/p>\n<hr data-start=\"8542\" data-end=\"8545\" \/>\n<h1 data-section-id=\"151ji0o\" data-start=\"8547\" data-end=\"8572\">Security Best Practices<\/h1>\n<h2 data-section-id=\"1179s48\" data-start=\"8574\" data-end=\"8599\">Never Hardcode Secrets<\/h2>\n<p data-start=\"8601\" data-end=\"8634\">Avoid storing credentials inside:<\/p>\n<ul data-start=\"8636\" data-end=\"8684\">\n<li data-section-id=\"iyud5k\" data-start=\"8636\" data-end=\"8649\">Source code<\/li>\n<li data-section-id=\"15dkvyg\" data-start=\"8650\" data-end=\"8665\">Docker images<\/li>\n<li data-section-id=\"5e8qgm\" data-start=\"8666\" data-end=\"8684\">Git repositories<\/li>\n<\/ul>\n<hr data-start=\"8686\" data-end=\"8689\" \/>\n<h1 data-section-id=\"1gpvwmp\" data-start=\"8691\" data-end=\"8719\">Use Least Privilege Access<\/h1>\n<p data-start=\"8721\" data-end=\"8770\">Applications should access only required secrets.<\/p>\n<hr data-start=\"8772\" data-end=\"8775\" \/>\n<h1 data-section-id=\"uxbdc9\" data-start=\"8777\" data-end=\"8799\">Enable Audit Logging<\/h1>\n<p data-start=\"8801\" data-end=\"8807\">Track:<\/p>\n<ul data-start=\"8809\" data-end=\"8863\">\n<li data-section-id=\"1sk3hoa\" data-start=\"8809\" data-end=\"8824\">Secret access<\/li>\n<li data-section-id=\"112ahkz\" data-start=\"8825\" data-end=\"8842\">Rotation events<\/li>\n<li data-section-id=\"15ao5y\" data-start=\"8843\" data-end=\"8863\">Permission changes<\/li>\n<\/ul>\n<hr data-start=\"8865\" data-end=\"8868\" \/>\n<h1 data-section-id=\"wnegxc\" data-start=\"8870\" data-end=\"8894\">Use Managed Identities<\/h1>\n<p data-start=\"8896\" data-end=\"8945\">Avoid static cloud credentials whenever possible.<\/p>\n<p data-start=\"8947\" data-end=\"8956\">Examples:<\/p>\n<ul data-start=\"8958\" data-end=\"9017\">\n<li data-section-id=\"1k54yay\" data-start=\"8958\" data-end=\"8969\">IAM Roles<\/li>\n<li data-section-id=\"1iw8k8j\" data-start=\"8970\" data-end=\"8992\">GCP Service Accounts<\/li>\n<li data-section-id=\"1n9l602\" data-start=\"8993\" data-end=\"9017\">Azure Managed Identity<\/li>\n<\/ul>\n<hr data-start=\"9019\" data-end=\"9022\" \/>\n<h1 data-section-id=\"jiwr10\" data-start=\"9024\" data-end=\"9052\">Encrypt Secrets Everywhere<\/h1>\n<p data-start=\"9054\" data-end=\"9086\">Secrets should remain encrypted:<\/p>\n<ul data-start=\"9088\" data-end=\"9127\">\n<li data-section-id=\"1resnbh\" data-start=\"9088\" data-end=\"9097\">At rest<\/li>\n<li data-section-id=\"1c64wqw\" data-start=\"9098\" data-end=\"9110\">In transit<\/li>\n<li data-section-id=\"pwgtee\" data-start=\"9111\" data-end=\"9127\">During backups<\/li>\n<\/ul>\n<hr data-start=\"9129\" data-end=\"9132\" \/>\n<h1 data-section-id=\"1wccgho\" data-start=\"9134\" data-end=\"9164\">Monitoring and Observability<\/h1>\n<p data-start=\"9166\" data-end=\"9192\">Important metrics include:<\/p>\n<ul data-start=\"9194\" data-end=\"9288\">\n<li data-section-id=\"128qr6a\" data-start=\"9194\" data-end=\"9219\">Secret expiration dates<\/li>\n<li data-section-id=\"1mo6wkv\" data-start=\"9220\" data-end=\"9239\">Rotation failures<\/li>\n<li data-section-id=\"e8qwwe\" data-start=\"9240\" data-end=\"9270\">Unauthorized access attempts<\/li>\n<li data-section-id=\"1ilerq5\" data-start=\"9271\" data-end=\"9288\">Refresh latency<\/li>\n<\/ul>\n<p data-start=\"9290\" data-end=\"9308\">Recommended tools:<\/p>\n<ul data-start=\"9310\" data-end=\"9424\">\n<li data-section-id=\"1j40yc5\" data-start=\"9310\" data-end=\"9349\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Prometheus<\/span><\/span><\/li>\n<li data-section-id=\"4w1vzp\" data-start=\"9350\" data-end=\"9389\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Grafana<\/span><\/span><\/li>\n<li data-section-id=\"1kjvnmf\" data-start=\"9390\" data-end=\"9424\">Cloud-native monitoring services<\/li>\n<\/ul>\n<hr data-start=\"9426\" data-end=\"9429\" \/>\n<h1 data-section-id=\"3thghn\" data-start=\"9431\" data-end=\"9450\">Common Challenges<\/h1>\n<hr data-start=\"9452\" data-end=\"9455\" \/>\n<h1 data-section-id=\"1o80wq4\" data-start=\"9457\" data-end=\"9495\">Application Downtime During Rotation<\/h1>\n<p data-start=\"9497\" data-end=\"9554\">Poorly implemented rotation may break active connections.<\/p>\n<hr data-start=\"9556\" data-end=\"9559\" \/>\n<h1 data-section-id=\"1r6u8q8\" data-start=\"9561\" data-end=\"9588\">Secret Propagation Delays<\/h1>\n<p data-start=\"9590\" data-end=\"9644\">Distributed systems may not refresh secrets instantly.<\/p>\n<hr data-start=\"9646\" data-end=\"9649\" \/>\n<h1 data-section-id=\"2lra7b\" data-start=\"9651\" data-end=\"9688\">Credential Synchronization Problems<\/h1>\n<p data-start=\"9690\" data-end=\"9742\">Applications and databases must remain synchronized.<\/p>\n<hr data-start=\"9744\" data-end=\"9747\" \/>\n<h1 data-section-id=\"1nqf6ii\" data-start=\"9749\" data-end=\"9773\">Operational Complexity<\/h1>\n<p data-start=\"9775\" data-end=\"9823\">Large organizations manage thousands of secrets.<\/p>\n<hr data-start=\"9825\" data-end=\"9828\" \/>\n<h1 data-section-id=\"1xqg3xy\" data-start=\"9830\" data-end=\"9861\">Multi-Cloud Secret Management<\/h1>\n<p data-start=\"9863\" data-end=\"9939\">Organizations using multiple cloud providers often centralize secrets using:<\/p>\n<ul data-start=\"9941\" data-end=\"10021\">\n<li data-section-id=\"yuzy45\" data-start=\"9941\" data-end=\"9982\"><span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">HashiCorp Vault<\/span><\/span><\/li>\n<li data-section-id=\"1i974nz\" data-start=\"9983\" data-end=\"9993\">CyberArk<\/li>\n<li data-section-id=\"1evq4w\" data-start=\"9994\" data-end=\"10021\">External Secrets Operator<\/li>\n<\/ul>\n<p data-start=\"10023\" data-end=\"10077\">This simplifies governance across AWS, GCP, and Azure.<\/p>\n<hr data-start=\"10079\" data-end=\"10082\" \/>\n<h1 data-section-id=\"1g5v3pi\" data-start=\"10084\" data-end=\"10110\">Recommended Architecture<\/h1>\n<p data-start=\"10112\" data-end=\"10164\">A modern enterprise architecture typically includes:<\/p>\n<ol data-start=\"10166\" data-end=\"10310\">\n<li data-section-id=\"ibspou\" data-start=\"10166\" data-end=\"10198\">Centralized secret management<\/li>\n<li data-section-id=\"1p8787v\" data-start=\"10199\" data-end=\"10220\">Automated rotation<\/li>\n<li data-section-id=\"apiof\" data-start=\"10221\" data-end=\"10246\">Runtime secret refresh<\/li>\n<li data-section-id=\"1a85ei9\" data-start=\"10247\" data-end=\"10263\">Audit logging<\/li>\n<li data-section-id=\"1dvc3ay\" data-start=\"10264\" data-end=\"10285\">Policy enforcement<\/li>\n<li data-section-id=\"pal7c7\" data-start=\"10286\" data-end=\"10310\">Monitoring and alerts<\/li>\n<\/ol>\n<hr data-start=\"10312\" data-end=\"10315\" \/>\n<h1 data-section-id=\"c2u8kc\" data-start=\"10317\" data-end=\"10371\">When Should You Implement Automated Secret Rotation?<\/h1>\n<p data-start=\"10373\" data-end=\"10410\">Automated rotation is essential when:<\/p>\n<ul data-start=\"10412\" data-end=\"10606\">\n<li data-section-id=\"1bbmc2f\" data-start=\"10412\" data-end=\"10448\">Applications handle sensitive data<\/li>\n<li data-section-id=\"e4gzxg\" data-start=\"10449\" data-end=\"10495\">Systems run in production cloud environments<\/li>\n<li data-section-id=\"16kmfk6\" data-start=\"10496\" data-end=\"10526\">Compliance regulations apply<\/li>\n<li data-section-id=\"1pg4wpc\" data-start=\"10527\" data-end=\"10565\">Multiple teams manage infrastructure<\/li>\n<li data-section-id=\"1i922e6\" data-start=\"10566\" data-end=\"10606\">Credentials are shared across services<\/li>\n<\/ul>\n<hr data-start=\"10608\" data-end=\"10611\" \/>\n<h1 data-section-id=\"1329ug4\" data-start=\"10613\" data-end=\"10629\">Final Thoughts<\/h1>\n<p data-start=\"10631\" data-end=\"10853\">Secrets management is no longer optional in cloud-native systems. As organizations move toward distributed <a href=\"https:\/\/harshad-sonawane.com\/blog\/java-applications-edge-iot-architecture\/\">microservices<\/a> and multi-cloud deployments, secure credential handling becomes foundational to application security.<\/p>\n<p data-start=\"10855\" data-end=\"11076\">Using <span class=\"hover:entity-accent entity-underline inline cursor-pointer align-baseline\"><span class=\"whitespace-normal\">Spring Boot<\/span><\/span> together with managed secret platforms from AWS, GCP, and Azure enables secure, scalable, and automated secrets rotation strategies that reduce operational risk significantly.<\/p>\n<p data-start=\"11078\" data-end=\"11259\">The most effective strategy is to combine automated rotation, dynamic secret refresh, least-privilege access control, and centralized observability into a unified security platform.<\/p>\n<p data-start=\"11261\" data-end=\"11454\">Security incidents caused by leaked credentials are among the most common cloud vulnerabilities today. Proper secret rotation is one of the simplest and most effective ways to reduce that risk.<\/p>\n<hr \/>\n<h1 data-section-id=\"1glbcc5\" data-start=\"12563\" data-end=\"12579\">Reference URLs<\/h1>\n<ul data-start=\"12581\" data-end=\"12916\">\n<li data-section-id=\"rwywvp\" data-start=\"12581\" data-end=\"12622\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/spring.io\/projects\/spring-boot?utm_source=chatgpt.com\">Spring Boot Official Documentation<\/a><\/span><\/li>\n<li data-section-id=\"18npx85\" data-start=\"12623\" data-end=\"12664\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/docs.aws.amazon.com\/secretsmanager\/?utm_source=chatgpt.com\">AWS Secrets Manager Documentation<\/a><\/span><\/li>\n<li data-section-id=\"1nw41v9\" data-start=\"12665\" data-end=\"12706\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/cloud.google.com\/secret-manager\/docs?utm_source=chatgpt.com\">Google Cloud Secret Manager Documentation<\/a><\/span><\/li>\n<li data-section-id=\"5lr08l\" data-start=\"12707\" data-end=\"12748\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/key-vault\/general\/overview?utm_source=chatgpt.com\">Azure Key Vault Documentation<\/a><\/span><\/li>\n<li data-section-id=\"1gy30mt\" data-start=\"12749\" data-end=\"12790\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/spring.io\/projects\/spring-cloud?utm_source=chatgpt.com\">Spring Cloud Documentation<\/a><\/span><\/li>\n<li data-section-id=\"1xou0z9\" data-start=\"12791\" data-end=\"12832\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/external-secrets.io\/latest\/?utm_source=chatgpt.com\">External Secrets Operator Documentation<\/a><\/span><\/li>\n<li data-section-id=\"13xodx1\" data-start=\"12833\" data-end=\"12874\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/developer.hashicorp.com\/vault\/docs?utm_source=chatgpt.com\">HashiCorp Vault Documentation<\/a><\/span><\/li>\n<li data-section-id=\"1kofe9h\" data-start=\"12875\" data-end=\"12916\"><span class=\"\" data-state=\"closed\"><a target=\"_blank\" class=\"decorated-link\" rel=\"noopener\" href=\"https:\/\/prometheus.io\/docs\/introduction\/overview\/?utm_source=chatgpt.com\">Prometheus Documentation<\/a><\/span><\/li>\n<\/ul>\n<p><\/p>\n<p><\/p>\n\n\n<p class=\"o-typing-delay-100ms ticss-27f7e3e9 wp-block-paragraph\"><o-anim-typing>&lt;> <strong>&#8220;Happy developing, one line at a time!&#8221;<\/strong> &lt;\/><\/o-anim-typing><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Managing secrets securely is one of the most critical responsibilities in modern cloud-native applications. API keys, database passwords, OAuth tokens, encryption keys, and certificates are frequently used across distributed systems, and exposing even a single credential can lead to severe security incidents. Many organizations still rely on static credentials stored [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":519,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[113],"tags":[388,385,391,263,386,8,66,369,387,390,393,2,7,392,389,384,394,3,59,254],"class_list":["post-509","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-spring-boot-aws-microservices","tag-aws-secrets-manager","tag-azure-key-vault","tag-backend-security","tag-cloud-architecture","tag-cloud-security","tag-devops","tag-distributed-systems","tag-enterprise-java","tag-gcp-secret-manager","tag-hashicorp-vault","tag-infrastructure-security","tag-java","tag-kubernetes","tag-runtime-refresh","tag-secret-management","tag-secrets-rotation","tag-security-best-practices","tag-spring-boot","tag-spring-cloud","tag-zero-downtime-deployment"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;<\/title>\n<meta name=\"description\" content=\"Learn how to implement secure secrets rotation strategies in Spring Boot using AWS Secrets Manager, GCP Secret Manager, and Azure Key Vault.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;\" \/>\n<meta property=\"og:description\" content=\"Learn how to implement secure secrets rotation strategies in Spring Boot using AWS Secrets Manager, GCP Secret Manager, and Azure Key Vault.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/\" \/>\n<meta property=\"og:site_name\" content=\"&lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-11T05:55:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-May-16-2026-10_06_23-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"HS\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"HS\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/\"},\"author\":{\"name\":\"HS\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\"},\"headline\":\"Secrets Rotation Strategies in Spring Boot with AWS\\\/GCP\\\/Azure\",\"datePublished\":\"2026-07-11T05:55:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/\"},\"wordCount\":1074,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\"},\"image\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ChatGPT-Image-May-16-2026-10_06_23-PM.png\",\"keywords\":[\"AWS Secrets Manager\",\"Azure Key Vault\",\"Backend Security\",\"Cloud Architecture\",\"Cloud Security\",\"DevOps\",\"Distributed Systems\",\"Enterprise Java\",\"GCP Secret Manager\",\"HashiCorp Vault\",\"Infrastructure Security\",\"Java\",\"Kubernetes\",\"Runtime Refresh\",\"Secret Management\",\"Secrets Rotation\",\"Security Best Practices\",\"Spring Boot\",\"Spring Cloud\",\"zero downtime deployment\"],\"articleSection\":[\"Java, Spring Boot, AWS, Microservices\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/\",\"name\":\"Secrets Rotation Strategies in Spring Boot with AWS\\\/GCP\\\/Azure - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\\\/&gt;\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ChatGPT-Image-May-16-2026-10_06_23-PM.png\",\"datePublished\":\"2026-07-11T05:55:00+00:00\",\"description\":\"Learn how to implement secure secrets rotation strategies in Spring Boot using AWS Secrets Manager, GCP Secret Manager, and Azure Key Vault.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#primaryimage\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ChatGPT-Image-May-16-2026-10_06_23-PM.png\",\"contentUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/ChatGPT-Image-May-16-2026-10_06_23-PM.png\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Secrets Rotation Strategies in Spring Boot with AWS\\\/GCP\\\/Azure\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/\",\"name\":\"Harshad's Dev Diary\",\"description\":\"HARSHAD&#039;s Dev Diary\",\"publisher\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/#\\\/schema\\\/person\\\/d82781218ba30c34fa81b49e8393681e\",\"name\":\"HS\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\",\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\",\"width\":400,\"height\":400,\"caption\":\"HS\"},\"logo\":{\"@id\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/harshad-sonawane.com\\\/blog\"],\"url\":\"https:\\\/\\\/harshad-sonawane.com\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","description":"Learn how to implement secure secrets rotation strategies in Spring Boot using AWS Secrets Manager, GCP Secret Manager, and Azure Key Vault.","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:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/","og_locale":"en_US","og_type":"article","og_title":"Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","og_description":"Learn how to implement secure secrets rotation strategies in Spring Boot using AWS Secrets Manager, GCP Secret Manager, and Azure Key Vault.","og_url":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/","og_site_name":"&lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","article_published_time":"2026-07-11T05:55:00+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-May-16-2026-10_06_23-PM.png","type":"image\/png"}],"author":"HS","twitter_card":"summary_large_image","twitter_misc":{"Written by":"HS","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#article","isPartOf":{"@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/"},"author":{"name":"HS","@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e"},"headline":"Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure","datePublished":"2026-07-11T05:55:00+00:00","mainEntityOfPage":{"@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/"},"wordCount":1074,"commentCount":0,"publisher":{"@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e"},"image":{"@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#primaryimage"},"thumbnailUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-May-16-2026-10_06_23-PM.png","keywords":["AWS Secrets Manager","Azure Key Vault","Backend Security","Cloud Architecture","Cloud Security","DevOps","Distributed Systems","Enterprise Java","GCP Secret Manager","HashiCorp Vault","Infrastructure Security","Java","Kubernetes","Runtime Refresh","Secret Management","Secrets Rotation","Security Best Practices","Spring Boot","Spring Cloud","zero downtime deployment"],"articleSection":["Java, Spring Boot, AWS, Microservices"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/","url":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/","name":"Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure - &lt;&gt;HARSHAD&#039;s Dev Diary&lt;\/&gt;","isPartOf":{"@id":"https:\/\/harshad-sonawane.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#primaryimage"},"image":{"@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#primaryimage"},"thumbnailUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-May-16-2026-10_06_23-PM.png","datePublished":"2026-07-11T05:55:00+00:00","description":"Learn how to implement secure secrets rotation strategies in Spring Boot using AWS Secrets Manager, GCP Secret Manager, and Azure Key Vault.","breadcrumb":{"@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#primaryimage","url":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-May-16-2026-10_06_23-PM.png","contentUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-May-16-2026-10_06_23-PM.png","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/harshad-sonawane.com\/blog\/secrets-rotation-strategies-in-spring-boot-with-aws-gcp-azure\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/harshad-sonawane.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Secrets Rotation Strategies in Spring Boot with AWS\/GCP\/Azure"}]},{"@type":"WebSite","@id":"https:\/\/harshad-sonawane.com\/blog\/#website","url":"https:\/\/harshad-sonawane.com\/blog\/","name":"Harshad's Dev Diary","description":"HARSHAD&#039;s Dev Diary","publisher":{"@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/harshad-sonawane.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/harshad-sonawane.com\/blog\/#\/schema\/person\/d82781218ba30c34fa81b49e8393681e","name":"HS","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg","url":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg","contentUrl":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg","width":400,"height":400,"caption":"HS"},"logo":{"@id":"https:\/\/harshad-sonawane.com\/blog\/wp-content\/uploads\/2025\/02\/about.jpg"},"sameAs":["https:\/\/harshad-sonawane.com\/blog"],"url":"https:\/\/harshad-sonawane.com\/blog\/author\/admin\/"}]}},"jetpack_publicize_connections":[],"_links":{"self":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts\/509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/comments?post=509"}],"version-history":[{"count":5,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts\/509\/revisions"}],"predecessor-version":[{"id":520,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/posts\/509\/revisions\/520"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/media\/519"}],"wp:attachment":[{"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/media?parent=509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/categories?post=509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/harshad-sonawane.com\/blog\/wp-json\/wp\/v2\/tags?post=509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}