<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Authorization (RBAC) on Spinnaker</title>
		<link>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/</link>
		<description>Recent content in Authorization (RBAC) on Spinnaker</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<atom:link href="https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Google Groups</title>
				<link>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/google-groups/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/google-groups/</guid>
				<description>&lt;h2 id=&#34;service-account-setup&#34;&gt;Service account setup&lt;/h2&gt;&#xA;&lt;p&gt;In order to access a user&amp;rsquo;s group membership, we must use the Google Admin Directory API. We will&#xA;setup a Google Cloud Platform (GCP) service account and grant it access to the Directory API.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Enable the Admin SDK &#xA;&lt;a href=&#34;https://console.cloud.google.com/apis/library/admin.googleapis.com&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;&#xA;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;In your &#xA;&lt;a href=&#34;https://console.cloud.google.com&#34; target=&#34;_blank&#34;&gt;Cloud Console&lt;/a&gt;&#xA;,&#xA;create a service account that will access the G Suite Directory API.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/google-groups/fiat-service-account.png&#34; alt=&#34;creating a service account for Fiat in GCP console&#34;&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Navigate to the &amp;ldquo;IAM &amp;amp; Admin&amp;rdquo; &amp;ndash;&amp;gt; Service accounts section.&lt;/li&gt;&#xA;&lt;li&gt;Click &amp;ldquo;Create Service Account.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Give it a name like &amp;ldquo;spinnaker-fiat.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Select &amp;ldquo;Furnish a new private key&amp;rdquo; and select the JSON format.&lt;/li&gt;&#xA;&lt;li&gt;Select &amp;ldquo;Enable G Suite Domain-wide Delegation.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Click &amp;ldquo;Create&amp;rdquo;, which should download the private key for your new service account (see&#xA;figure below).&lt;/li&gt;&#xA;&lt;li&gt;Transfer this JSON file to a known location in your Spinnaker deployment.&lt;/li&gt;&#xA;&lt;li&gt;You should see your newly created service account in the list, along with &amp;ldquo;DwD&amp;rdquo; and an&#xA;option to &amp;ldquo;View Client ID&amp;rdquo;. Click &amp;ldquo;View Client ID&amp;rdquo; (see figure below).&lt;/li&gt;&#xA;&lt;li&gt;Note the Client ID displayed. It will be used in the next step.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/google-groups/fiat-cliend-id.png&#34; alt=&#34;View the client ID&#34;&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>LDAP</title>
				<link>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/ldap/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/ldap/</guid>
				<description>&lt;p&gt;Please note that LDAP is flexible enough to offer lots of other options and configuration possibilities. Spinnaker&#xA;uses the Spring Security libraries, which solve a number of challenges.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configure-fiat&#34;&gt;Configure fiat&lt;/h2&gt;&#xA;&lt;p&gt;With the LDAP manager credentials and search patterns in hand, add the following to &lt;code&gt;fiat-local.yml&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;auth&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;group-membership&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;service&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ldap&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ldap&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;url&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ldaps://something.com&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;managerDn&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;dn=something&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;managerPassword&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;encrypted:secretPlease&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;userSearchBase&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;searchBase&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;groupSearchBase&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## optional, defaults to the uid={-},ou=users&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;userDnPattern&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;uid={0},ou=users&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## user search fitler defaults to null but could be set like so&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;userSearchFilter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;(employeeEmail={0})&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Defaults to uniqueMember={0}&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;groupSearchFilter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;(uniqueMember={0})&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## defaults to cn&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;groupRoleAttributes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;cn&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;groupUserAttributes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nullByDefault&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;thresholdToUseGroupMembership&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enablePagingForGroupMembershipQueries&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;pageSizeForGroupMembershipQueries&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;loadUserDNsBatchSize&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;userIdAttribute&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;employeeEmail&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enableDnBasedMultiLoad&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;cache&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Defaults to false.  Enable to reduce LDAP load&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enabled&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;expireAfterWriteSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;600&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See the &#xA;&lt;a href=&#34;https://github.com/spinnaker/spinnaker/blob/main/fiat/fiat-ldap/src/main/java/com/netflix/spinnaker/fiat/config/LdapConfig.java&#34; target=&#34;_blank&#34;&gt;ldap configuration code&lt;/a&gt;&#xA; for more&#xA;information on each setting.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pipeline Permissions</title>
				<link>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/pipeline-permissions/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/pipeline-permissions/</guid>
				<description>&lt;p&gt;You can use pipeline permissions as an alternative to manually managing &#xA;&lt;a href=&#34;https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/service-accounts/&#34;&gt;Fiat Service Accounts&lt;/a&gt;&#xA;.&lt;/p&gt;&#xA;&lt;p&gt;Without pipeline permissions, a Spinnaker operator first has to create a&#xA;Fiat Service account with the correct permissions. A user can then specify the&#xA;service account as the &lt;code&gt;RunAsUser&lt;/code&gt; per automated trigger. Pipeline permissions&#xA;simplifies this flow – a user only has to specify the set of roles in the&#xA;pipeline specification based on which a Fiat service account is automatically&#xA;created and associated with the pipeline.&lt;/p&gt;</description>
			</item>
			<item>
				<title>SAML</title>
				<link>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/saml/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/saml/</guid>
				<description>&lt;p&gt;The SAML use case is a special one - it&amp;rsquo;s the only one where a user&amp;rsquo;s roles cannot be dynamically&#xA;updated. This is because the user&amp;rsquo;s roles are sent in the initial authentication handshake between&#xA;Gate and the SAML Identity Provider (IdP).&lt;/p&gt;&#xA;&lt;h2 id=&#34;idp-setup&#34;&gt;IdP Setup&lt;/h2&gt;&#xA;&lt;p&gt;To enable SAML roles, configure your IdP to include group membership in the assertion&#xA;(not covered - some providers may not offer this option). By default, Gate looks for the&#xA;&lt;code&gt;memberOf&lt;/code&gt; attribute statement, but this can be reconfigured in Gate’s settings.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Service Accounts</title>
				<link>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/service-accounts/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/service-accounts/</guid>
				<description>&lt;p&gt;Service Accounts enable the ability for automatically triggered pipelines to modify&#xA;resources in protected accounts or applications. Practically speaking, this means that a Git&#xA;commit could trigger a Jenkins build that could then kick off a pipeline to deploy the newly built&#xA;image in your access-controlled QA environment.  The pipeline would run utilizing the permissions of the service&#xA;account.  Service accounts are NOT authenticated accounts but abstractions around permissions for roles.&lt;/p&gt;</description>
			</item>
			<item>
				<title>GitHub Teams</title>
				<link>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/github-teams/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://deploy-preview-637--spinnaker-io.netlify.app/docs/setup/other_config/security/authorization/github-teams/</guid>
				<description>&lt;h2 id=&#34;github-app-authentication-recommended&#34;&gt;GitHub App Authentication (Recommended)&lt;/h2&gt;&#xA;&lt;p&gt;GitHub App authentication, available in releases after 2025.4.0, is the preferred method for connecting Spinnaker to GitHub. It offers significant advantages over Personal Access Tokens (PATs):&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Higher Rate Limits&lt;/strong&gt;: GitHub Apps have a rate limit of &#xA;&lt;a href=&#34;https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#primary-rate-limit-for-authenticated-users&#34; target=&#34;_blank&#34;&gt;15,000&lt;/a&gt;&#xA; requests per hour (vs &#xA;&lt;a href=&#34;https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#primary-rate-limit-for-authenticated-users&#34; target=&#34;_blank&#34;&gt;5,000&lt;/a&gt;&#xA; for PATs).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Enhanced Security&lt;/strong&gt;: Uses short-lived tokens that are automatically refreshed, rather than long-lived static tokens.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Granular Permissions&lt;/strong&gt;: Apps can be scoped to specific permissions.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You have GitHub organization admin permissions to create and install the app.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;1-create-a-github-app&#34;&gt;1. Create a GitHub App&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Navigate to your GitHub Organization Settings &amp;gt; Developer settings &amp;gt; GitHub Apps.&lt;/li&gt;&#xA;&lt;li&gt;Click &lt;strong&gt;New GitHub App&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Set the following fields:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;GitHub App Name&lt;/strong&gt;: e.g., &lt;code&gt;spinnaker-fiat-auth&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Homepage URL&lt;/strong&gt;: Your Spinnaker URL (or placeholder).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Callback URL&lt;/strong&gt;: Your Spinnaker URL (or placeholder).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Webhook&lt;/strong&gt;: Uncheck &amp;ldquo;Active&amp;rdquo; (not needed for authorization).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Permissions&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Organization Permissions &amp;gt; Members&lt;/strong&gt;: Read-only&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Click &lt;strong&gt;Create GitHub App&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Note the &lt;strong&gt;App ID&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Generate a &lt;strong&gt;Private key&lt;/strong&gt; and save the &lt;code&gt;.pem&lt;/code&gt; file.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Install App&lt;/strong&gt;: Go to &amp;ldquo;Install App&amp;rdquo; in the sidebar and install it on your organization. Note the &lt;strong&gt;Installation ID&lt;/strong&gt; from the URL (e.g., &lt;code&gt;https://github.com/organizations/my-org/settings/installations/12345678&lt;/code&gt; -&amp;gt; &lt;code&gt;12345678&lt;/code&gt;).&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install at the organization level (not per-repo) so team membership lookups work for all repos.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GitHub App installation tokens are short-lived (1 hour) and Fiat caches them in memory with an early refresh buffer. They are never written to disk.&lt;/li&gt;&#xA;&lt;li&gt;PATs configured with &lt;code&gt;--accessToken&lt;/code&gt; are stored in Fiat configuration; rotate them periodically and handle them like any other long-lived secret.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;personal-access-token-legacy&#34;&gt;Personal Access Token (Legacy)&lt;/h2&gt;&#xA;&lt;p&gt;If you cannot use a GitHub App, you can still use a Personal Access Token (PAT). Note that this has lower rate limits.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
