<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IAM | 伊東屋TECHブログ</title>
	<atom:link href="https://tech-itoya.com/tag/iam/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech-itoya.com</link>
	<description>千葉県・船橋市の総合園芸店が運営する技術ブログ</description>
	<lastBuildDate>Sun, 05 Oct 2025 00:15:12 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://tech-itoya.com/wp-content/uploads/2024/10/cropped-itoya-logo-32x32.png</url>
	<title>IAM | 伊東屋TECHブログ</title>
	<link>https://tech-itoya.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SSOユーザーごとにS3アクセスを制御するバケットポリシーの書き方</title>
		<link>https://tech-itoya.com/identity-center%e3%81%a7sso%e3%81%97%e3%81%9f%e5%80%8b%e5%88%a5%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e3%81%94%e3%81%a8%e3%81%abs3%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e5%88%b6%e5%be%a1%e3%81%99/</link>
					<comments>https://tech-itoya.com/identity-center%e3%81%a7sso%e3%81%97%e3%81%9f%e5%80%8b%e5%88%a5%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e3%81%94%e3%81%a8%e3%81%abs3%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e5%88%b6%e5%be%a1%e3%81%99/#respond</comments>
		
		<dc:creator><![CDATA[tori-dash]]></dc:creator>
		<pubDate>Sat, 28 Dec 2024 01:35:49 +0000</pubDate>
				<category><![CDATA[TECH記事]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[Identity Center]]></category>
		<category><![CDATA[S3]]></category>
		<guid isPermaLink="false">https://tech-itoya.com/?p=285</guid>

					<description><![CDATA[こんにちはとりです。 今回はIdentiy Centerで管理しているSSOユーザーごとにS3アクセスを制御したいときのバケットポリシーの書き方について記事になります。 ポリシー自体はシンプルになったのですが、どの条件で [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>こんにちはとりです。</p>



<p>今回はIdentiy Centerで管理しているSSOユーザーごとにS3アクセスを制御したいときのバケットポリシーの書き方について記事になります。</p>



<p>ポリシー自体はシンプルになったのですが、どの条件でコントロールすればうまくいくか案外迷ったので、同じような方の参考になれば幸いです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">想定している構成</a></li><li><a href="#toc2" tabindex="0">ポリシーの書き方</a></li><li><a href="#toc3" tabindex="0">おまけ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">想定している構成</span></h2>



<p>細かい要件としては以下を想定しています</p>



<ul class="wp-block-list">
<li>AWS 利用者は <strong>authority-A </strong>という許可セットを使って、対象のAWSアカウントにアクセスする</li>



<li><strong>authority-A</strong> は対象AWSアカウント内のS3全般に対して広めのアクセス権限をもっている</li>



<li>AWSアカウント内の特定のS3バケットだけは、特定ユーザーだけ見れるようにしたい。</li>
</ul>



<p>SSOの許可セットで広めに AWS 権限を与えているものの、特定のS3バケットについては見れるユーザーを絞りたいというケースになります</p>



<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" width="551" height="182" src="https://tech-itoya.com/wp-content/uploads/2024/12/tori-20241228-01-1.png" alt="" class="wp-image-295" style="width:702px;height:auto" srcset="https://tech-itoya.com/wp-content/uploads/2024/12/tori-20241228-01-1.png 551w, https://tech-itoya.com/wp-content/uploads/2024/12/tori-20241228-01-1-300x99.png 300w" sizes="(max-width: 551px) 100vw, 551px" /></figure>



<h2 class="wp-block-heading"><span id="toc2">ポリシーの書き方</span></h2>



<p>結果シンプルになりましたが、以下のようなポリシーで実現できました</p>



<p>S3に限らずIAM全般では明示的な Deny がある場合、それが最初に評価されるため、許可セット(<strong>authority-A</strong>)がアクセス権限を持っていたとしても、Deny 条件にマッチすればアクセスできなくなります。</p>



<pre class="wp-block-code"><code>{
	"Version": "2012-10-17",
	"Statement": &#91;
		{
			"Sid": "SSOTest",
			"Effect": "Deny",
			"Principal": "*",
			"Action": "*",
			"Resource": &#91;
                             "arn:aws:s3:::&lt;S3 バケット名&gt;/*",
                             "arn:aws:s3:::&lt;S3 バケット名&gt;"
                        ],
			"Condition": {
				"StringNotLike": {
					"aws:userId": "AROA*:&lt;SSO ユーザー名&gt;*"
				}
			}
		}
	]
}</code></pre>



<p>SSO ユーザー名を確認したい場合は、以下コマンドを叩いて確認できます</p>



<pre class="wp-block-code"><code>aws sts get-caller-identity --output yaml</code></pre>



<p>注意点としては先ほど書いたように、Deny 句があると最初にそれが評価されるため、SSOユーザー以外にもアクセスしてくるプリンシパル(例えばECSやlambda)がいる場合、適宜 <strong>Condition</strong> 句でdeny対象から外す必要があります。</p>



<h2 class="wp-block-heading"><span id="toc3">おまけ</span></h2>



<p>最初やろうとしてダメだった方法も書いておきます</p>



<p>SSO から 払いだされるフェデレーテッドユーザーの形式も <strong>&lt;許可セット名&gt;/&lt;SSO ユーザー名&gt; </strong>で、SSOユーザー名含んでいたので、これでポリシーかけないかな？と思ったのですがダメそうでした。</p>



<p>↓の感じで条件書いてみたのですが、許可セットまでは制御がきくものの SSO ユーザー名までは <code>aws:PrincipalARN</code> に含められないようです</p>



<pre class="wp-block-code"><code>"Condition": {
	"StringNotLike": {
		"aws:PrincipalARN": "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_&lt;許可セット名&gt;/&lt;SSO ユーザー名&gt;"
        }
}</code></pre>



<p></p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="285"
					data-ulike-nonce="c9e2d19b6c"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_285"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://tech-itoya.com/identity-center%e3%81%a7sso%e3%81%97%e3%81%9f%e5%80%8b%e5%88%a5%e3%83%a6%e3%83%bc%e3%82%b6%e3%83%bc%e3%81%94%e3%81%a8%e3%81%abs3%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%82%92%e5%88%b6%e5%be%a1%e3%81%99/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
