ユーザーロールでのクロスアカウントアクセスについて

## はじめに

本投稿は [SBCloud Engineers' Blog](https://techblog.sbcloud.co.jp/) にも投稿しています。SBCloud Engineers' Blogには<font color="red">日中間接続をはじめ、Alibaba Cloud関連のソリューションや技術ネタ</font>を記載していますので、よかったら是非一度アクセスみてください。

Alibaba Cloud上でシステムを構築される際に、複数アカウントのRAMユーザーの管理やアカウント間のアクセスなどの悩みがありますでしょうか。本日はResource Access Management(以下、RAM)のちょっとした便利な機能 、ユーザーロールでのクロスアカウントアクセスについて、ご紹介したいと思っています。

## RAMロール
RAMロールには、ユーザーロールとサービスロールがあります。それぞれの使い方は下記の通りになっております。


　ユーザーロール
　このロールを割り当てることで、信頼済みの Alibaba Cloud アカウントのサブユーザーがクラウドリソースにアクセスできるようになります。割当対象アカウントとして現在の Alibaba Cloud アカウントと別のアカウントとも可能です。

　サービスロール
　このロールを割り当てることで、信頼済みのクラウドサービスからクラウドリソースにアクセスできるようになります。


下記に示す通り、ユーザーロールを利用して、( ① )コンソールと( ② )Command Line Interfaceなどで他アカウントへアクセスすることが可能です。今回は①のコンソールから他アカウントへアクセスする方法をご紹介します。

![role.jpg](https://qiita-image-store.s3.amazonaws.com/0/117156/52e0538f-d736-b398-7ec4-4b956805fcbd.jpeg)

## 前提条件

今回利用するアカウントとロールは下記の通りです。

●アカウントA(5450********6520)
アカウントエリアス: sbcloud-ca23
RAMユーザー: qiu
RAMユーザーの権限: AdministratorAccess

●アカウントB(5568********6773)
アカウントエリアス: jobbin
RAMロール: switchRoleSbc
ロール権限: AliyunECSReadOnlyAccess

ユーザーロールの作成は、公式ドキュメント [ユーザーロールの作成](https://jp.alibabacloud.com/help/doc-detail/28649.htm#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90) にてご確認ください。

## コンソールから別アカウントへのアクセス

アカウントAからアカウントBへアクセスする際には、SwitchRoleという概念があります。


SwitchRole
実際のユーザーは、コンソールで SwitchRole 操作を実行することにより、現在のログイン ID からロール ID に切り替えることができます。コンソールにログインした後、信頼できるアクターとして自身が指定されているロールに切り替えることができます。これにより、ロール ID を使用して、クラウドリソースを操作できます。ロール ID に切り替えると、ユーザーの実際の ID のアクセス権限は使用できなくなります。ロールを使用する必要がなくなったら、そのロールから元のログイン ID に切り替えることができます。

### ログイン手順

1: アカウントAにログイン後、下記のように、画面の右上にユーザーのアイコンがあります。
![step1](https://techblog.sbcloud.co.jp/assets/2018/10/%E7%94%BB%E9%9D%A21.jpeg)

2: アイコンにマウスオーバーすると、アカウントの情報が表示されます。
![step2](https://techblog.sbcloud.co.jp/assets/2018/10/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-10-01-15.50.17.png)

3: 「スイッチID」をクリックし、「ロール変更」画面が表示されます。
![step3](https://techblog.sbcloud.co.jp/assets/2018/10/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-10-01-16.16.57.png)

4: アカウントBのエンタプライズ別名(エイリアス: jobbin)とロール名(switchRoleSbc)を入力して、「変更」ボタンを押すと、アカウントBのコンソール画面が表示されます。
![step4](https://techblog.sbcloud.co.jp/assets/2018/10/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-10-01-16.21.07.png)

5: ロールswitchRoleSbcには、ECSの閲覧権限AliyunECSReadOnlyAccessを付与されていますので、ECSの管理画面にいくと、ECSの情報が表示されます。
![step5-1](https://techblog.sbcloud.co.jp/assets/2018/10/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-10-01-16.33.24.png)

その一方、ECSインスタンスの起動や作成など、権限が付与されていない操作をしようとすると、エラー画面が表示されます。
![step5-2](https://techblog.sbcloud.co.jp/assets/2018/10/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88-2018-10-01-16.39.46.png)

### その他

ユーザーロールを利用すれば、別のアカウントへのアクセスが簡単にできますが、下記3つ注意点があります。

1: RootアカウントはSwitchRoleができません。実際にRootアカウントでログインした場合、アイコンにマウスオーバーしても、「スイッチID」のリンクが表示されません。

2: 「ロール変更」画面に、エイリアスを要求されるので、事前にアカウントのエイリアスを設定する必要があります。

3: 多段SwitchRole(例: Account A → Account B → Account C)ができません。

## 最後

今回はコンソールから別のアカウントへログインする方法をご紹介させていただきました。複数アカウントを利用される際に、RAMユーザーの管理はややこしくなりがちですが、是非SwitchRoleの活用を一度検討してみてください。