DVA

クロスアカウントロールを使用したAWSアカウント間のアクセス権限の委任

スポンサーリンク
クロスアカウントでAWSアカウント間のアクセス権限の委任 DVA
スポンサーリンク
スポンサーリンク

クロスアカウントロールを使用して、AWSアカウント間でアクセス権限を委任する

特定のAWSリソースに、別のAWSアカウントからアクセスすることをクロスアカウントアクセスと言います。

特定のアカウントにあるリソースを別のアカウントのユーザーと共有します。このようにクロスアカウントアクセスを設定することで、お客様はアカウントごとに IAM ユーザーを作成する必要がなくなります。

IAM チュートリアル: AWS アカウント間の IAM ロールを使用したアクセスの委任

本ページでは、以下のページを参考に、クロスアカウントアクセスの方法を確認します。

IAM チュートリアル: AWS アカウント間の IAM ロールを使用したアクセスの委任 - AWS Identity and Access Management
AWS アカウントの API アクセスを別のアカウントの AWS Identity and Access Management (IAM) ユーザーに委任する手順について説明します。(1/4)

構築する環境

Diagram of delegate access rights across AWS accounts using IAM roles.

2つのAWSアカウントを使用します。

1つ目のアカウントは2つのリソースを作成します。

1つ目はSSMパラメータストアにパラメータを作成します。
2つ目はIAMロールを作成します。
このIAMロールは、先述のSSMパラメータストアにアクセスするための権限を有しています。

2つ目のアカウントはこのIAMロールを引き受けます。
ロールを引き受けた後、SSMパラメータストアにアクセスできることを確認します。

環境構築用のCloudFormationテンプレートファイル

上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートを配置しました。

awstut-dva/02/002 at main · awstut-an-r/awstut-dva
Contribute to awstut-an-r/awstut-dva development by creating an account on GitHub.

テンプレートファイルのポイント解説

(参考)SSMパラメータストア

Resources: Parameter: Type: AWS::SSM::Parameter Properties: Name: !Sub "${Prefix}-Parameter" Type: String Value: Test Parameter
Code language: YAML (yaml)

検証用のリソースとして、SSMパラメータを作成します。
特別な設定は行いません。

IAMロール

Resources: SSMParameterRole: Type: AWS::IAM::Role DeletionPolicy: Delete Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: sts:AssumeRole Principal: AWS: !Ref CrossAccountId Policies: - PolicyName: !Sub "${Prefix}-GetParameterPolicy" PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: - ssm:DescribeParameters Resource: "*" - Effect: Allow Action: - ssm:GetParameter Resource: - !Sub "arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${Parameter}"
Code language: YAML (yaml)

ポイントは信頼ポリシーです。
PrincipalプロパティにクロスアカウントアクセスするアカウントのIDを指定します。

インラインポリシーでは、SSMパラメータストアへのアクセス権限を定義します。
こちらについては、以下のページを参考に設定しました。

IAM ポリシーを使用して Systems Manager パラメータへのアクセスを制限する - AWS Systems Manager
IAM ポリシーを使用して、Systems Manager パラメータへのアクセスを制限します。

環境構築

CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。

CloudFormationスタックを作成し、スタック内のリソースを確認する

CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。

各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。

  • SSMパラメータ:dva-02-002-Parameter
  • IAMロール:dva-02-002-IAMStack-3A259XLV4A28-SSMParameterRole-1E0267AH90Z9O

AWS Management Consoleから各リソースを確認します。

SSMパラメータを確認します。

Detail of SSM 1.

確かにパラメータが作成されています。

IAMロールを確認します。

Detail of IAM 1.
Detail of IAM 2.

権限を見ると、先述のSSMパラメータにアクセスするための権限が設定されていることがわかります。

信頼関係を見ると、クロスアカウントアクセスするアカウントのID(のrootユーザ)がプリンシパルとして設定されています。

動作確認

準備が整いましたので、クロスアカウントアクセスします。

クロスアカウントアクセスするアカウントで、マネージメントコンソールを開き、「Switch role」を押下します。

Detail of IAM 3.

引き受けるロールの情報を入力し、「Switch Role」を押下します。

Detail of IAM 4.

正常にロールが引き受けられますと、右上にそのロールが表示されます。

Detail of IAM 5.

試しにEC2のページに開きます。

Detail of IAM 6.

全ての項目でエラーが表示されています。
現在引き受けているロールでは、EC2に関する権限は許可されていないためです。

改めてSSMパラメータストアを確認します。

Detail of SSM 2.

先ほど確認したパラメータが表示されました。

詳細を確認します。

Detail of SSM 3.

パラメータの値についても確認できます。

このようにクロスアカウントロールを引き受けることによって、別アカウントのリソースにアクセスすることができます。

まとめ

クロスアカウントロールを使用して、AWSアカウント間でアクセス権限を委任する方法を確認しました。

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