PR

IAMロールのスイッチロールを試してみた – 異なるアカウント間での権限移譲とその操作 –

AWS
記事内に広告が含まれています。

AWS環境では、異なるアカウント間でリソースにアクセスする必要が生じることがあります。このような場合、IAMロールのスイッチロールを利用することで、特定のリソースへのアクセス権限を安全に委譲できます。本記事では、アカウントAからアカウントBに対してS3バケットのアクセス権限を付与する方法を実際に試し、その手順と結果を共有します。

想定読者
  • IAMやロールの基本的な概念を学びたい方。
  • マルチアカウント環境での運用に課題を感じている方。
  • 安全な権限移譲方法を模索している方。
  • IAMロールを活用してアクセス制御を強化したい方。
得られるメリット
  • スイッチロールを使った異なるアカウント間でのアクセス権限の設定方法を学べます。
  • 信頼ポリシーやIAMポリシーの構成方法についての実践的な知識を得られます。
  • 最小権限の原則を意識した安全なリソース管理の方法を習得できます。

今回のIAMのスイッチロールだけではなく、IAMを全般的に理解したい方に向けて、AWS IAMの基礎から応用まで学べる電子書籍「AWSの薄い本 IAMのマニアックな話」をご紹介します。

本書は、IAMの仕組みを詳細に解説しており、日常業務でIAMを利用しているエンジニアや、これからIAMの深い知識を習得したい方に最適です。特に、信頼ポリシーやアクセス管理の実例が豊富に取り上げられているため、実務での即戦力となる知識が得られます。

広告

2つのアカウント(アカウントAとアカウントB)を利用し、

  1. アカウントAでIAMロールを作成し、アカウントBが利用できるよう設定します。
  2. アカウントBでスイッチロールを実行し、アカウントAのS3リソースにアクセスします。
  3. 設定したポリシーに基づいて、アクセス可能なリソースと制限されるリソースを確認します。

これにより、IAMロールを利用した安全な権限移譲の方法を紹介します。

IAMロールを作成する

1. アカウントAにサインインします

2. IAMに移動し、ロール>ロールを作成をクリックします

3. 信頼されたエンティティタイプを①「AWSアカウント」、AWSアカウントを「別のAWSアカウント」とし、アカウントIDには、アカウントBのものを設定します

4. 許可を追加では、そのまま何を追加せずに「次へ」をクリックします

5.ロール名「AccountBS3AccessRole」を入力し、信頼ポリシーが下記のようになっていることを確認します。XXXXXXXXXXXには、アカウントBが指定されています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::XXXXXX:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

6. ロールを作成をクリックします

ポリシーの作成

1.作成したロールを選択し、「許可を追加」>「インラインポリシーの追加」をクリックします

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:List*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:Describe*"
            ],
            "Resource": [
                "arn:aws:s3:::XXXXXXXX",
                "arn:aws:s3:::XXXXXXXX/*"
            ]
        }
    ]
}

スイッチロールを設定する

1. アカウントBにサインインします

2. 画面右上のIAMユーザをクリックし、「ロールの切り替え」をクリックします

3. ロールの切り替えで下記を入力し、「ロールの切り替え」をクリックします

  • アカウントID:アカウントAのID
  • IAMロール名:アカウントAで作成したIAMロール名「AccountBS3AccessRole」
  • 表示名:任意
  • 表示色:任意

権限がないS3オブジェクトにアクセスする

  1. S3に移動します。List権限がついているので一覧が見えます。

2. 権限がないバケットにアクセスします

3. 任意のファイルを選び、「ダウンロード」をクリックします

4. AccessDeniedになりました。想定通りです。

権限を持っているS3オブジェクトにアクセスする

1. 対象のバケットを選択します

2. オブジェクトを選択し、「ダウンロード」をクリックします

3. ダウンロードできました!

% ls -l index.html 
-rw-r--r--@ 1 XXXX  XXXX  574 12  9 22:39 index.html
% 

Q1: スイッチロールとは何ですか? A1: スイッチロールは、AWSアカウント間や異なるサービス間で権限を移譲するための仕組みです。特定のIAMロールに切り替えることで、別アカウントのリソースにアクセスできます。

Q2: スイッチロールの際に表示されるエラー”AccessDenied”の原因は何ですか? A2: 主な原因として以下が考えられます:

  • IAMポリシーで必要な権限が付与されていない。
  • 信頼ポリシーにアクセス元アカウントが設定されていない。
  • アクセス対象リソースに適切なリソースポリシーが設定されていない。

Q3: 信頼ポリシーとは何ですか? A3: 信頼ポリシーは、どのエンティティがIAMロールを引き受けることができるかを定義するポリシーです。今回の例では、アカウントBがアカウントAのIAMロールを引き受けられるよう設定しました。

Q4: アカウントBでスイッチロールを実行する際、IAMユーザでなければならないのでしょうか? A4: はい、スイッチロールはIAMユーザまたはフェデレーティッドユーザが実行できます。ルートアカウントではスイッチロールを利用できません。

IAMをより深く理解したい方におすすめ

今回のIAMのスイッチロールだけではなく、IAMを全般的に理解したい方に向けて、AWS IAMの基礎から応用まで学べる電子書籍「AWSの薄い本 IAMのマニアックな話」をご紹介します。

本書は、IAMの仕組みを詳細に解説しており、日常業務でIAMを利用しているエンジニアや、これからIAMの深い知識を習得したい方に最適です。特に、信頼ポリシーやアクセス管理の実例が豊富に取り上げられているため、実務での即戦力となる知識が得られます。

広告

リソース

IAM ロールの作成 - AWS Identity and Access Management
AWS Management Console、AWS CLI、または IAM API から IAM ロールを作成します。

IAMロールを利用したスイッチロールは、異なるアカウント間での安全な権限移譲を実現するための非常に有効な手段です。本記事で取り上げた手順と検証結果をもとに、他のAWSリソースに対する応用も可能です。

今後は、さらなる応用例として、異なるサービス間での連携やより複雑なポリシーの設定についても検討してみたいと思います。

コメント

タイトルとURLをコピーしました