AlibabaCloudのRAM(Resource Access Management)サービスについて

RAM(Resource Access Management)は、AlibabaCloudユーザーに対してAlibabaCloudのリソースへのアクセスを安全に制御するための仕組みです。
RAMにより、どのユーザーが AlibabaCloudリソースを使用できるか（認証）、また、それらのユーザーがどのリソースをどのような方法で使用できるか（認可）を制御できます。
※AlibabaCloudは、AWSと類似するサービスが多いですが、 RAMは、AWSのIAMと類似するサービスです。

## RAM使用可能のクラウドサービス
次の表に、管理コンソールまたは API の呼び出しから RAM にアクセスできるすべての Alibaba Cloud サービスを示します。この表では、
右のマーク（√）は使用可能であることを示します。
円マーク（○）は使用できないことを示します。

| サービス  | コンソール  | API  |
|---|---|---|
|Elastic Compute Service	|√	|√ |
|ApsaraDB for RDS	|√	|√ |
|ApsaraDB for MongoDB	|√	|√ |
|ApsaraDB for Redis	|√	|√ |
|Server Load Balancer	|√	|√ |
|Cloud Monitor	|√	|√ |
|Resource Access Management (RAM)	|√	|√ |
|Object Storage Service	|√	|√ |
|Key Management Service (KMS)	|√	|√ |
|Alibaba Cloud CDN	|√	|√ |
|Table Store	|√	|√ |
|Log Service	|√	|√ |
|Virtual Private Cloud	|√	|√ |
|Elastic IP Address	|√	|√ |
|Express Connect	|√	|√ |
|Message Service	|√	|√ |
|Technical Support Service	|√	|○ |

## RAMの利用するには
・AlibabaCloud マネジメントコンソール
・AlibabaCloud コマンドラインツール
・AlibabaCloud SDK
一般には AlibabaCloud マネジメントコンソールのRAMの画面から利用します。
https://ram.console.aliyun.com/#/overview
<img width="2816" alt="スクリーンショット 2018-05-13 14.17.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/00830892-bc92-645d-b1ad-47d73f9128ac.png">

RAMも他のサービスと同様に、自動化が可能です。 シェルスクリプトから利用するには AlibabaCloud コマンドラインツールAlibabaCloud Command Line Interface(AlibabaCloud CLI)が提供されています。 アプリケーションに組み込むには AlibabaCloud SDK（Java、Python、.NET、Node.js、PHPなど）を利用できます。

## RAMの基本
最初にAlibabaCloudを利用する時に、AlibabaCloudプライマリアカウントを取得しますが、このアカウントはリソースへのフルアクセスを許可します。お客様ごとのAlibabaCloud環境は、複数の利用者やプログラムなどによって利用されますので、原則的にAlibabaCloudアカウントやそのシークレットアクセスキーを直接利用することはお勧めできません。なので、実際には用途や目的ごとにAlibabaCloudアカウントをから、RAMユーザーやRAMロールなどを作成して、AlibabaCloudを利用します。そうすることで、RAMユーザーやRAMロールごとのアクセス管理、承認、監査（AlibabaCloud ActionTrail）が可能になります。
※ UNIXの「root」アカウントの直接利用、Windowsの「Administrator」の直接利用は望ましくないというのと同じ考えに基づきます。

### RAM利用の流れ
RAMユーザーの作成を例にしますと、RAMユーザーは１つ以上のRAMグループに所属させ、RAMグループは１つ以上のRAMポリシーを設定します。UNIXやWindowsのユーザー管理と基本的に考え方は一緒です。
以降では、RAMユーザー、RAMグループ、RAMポリシー、およびRAMロールについて解説します。

####■RAMユーザー
RAMユーザーは、固定のID と ID資格情報を持つ実際のIDであり、一般的には、特定のユーザーまたはアプリケーションに対応します。
RAMでは、(企業の従業員、システム、アプリケーションに対応する)複数のRAMユーザーをAlibabaCloudアカウントで作成できます。
RAMユーザーはリソースを所有せず、個別に課金されることはありません。ユーザーの管理と支払いはAlibaba Cloudアカウントごとに行われます。
RAMユーザーはAlibabaCloudアカウントに属しており、このアカウントでのみ表示できます。また、独立した AlibabaCloudアカウントではありません。
AlibabaCloudアカウントから権限付与された後にのみ、AlibabaCloudアカウントの下で、コンソールにログオンすることや、APIを使用してリソースで操作を実行することができます。

ユーザー作成手順は次のとおりです。
・[RAMコンソール]にログインします。
・ユーザー > 新規ユーザー を選択します。
<img width="2820" alt="スクリーンショット 2018-05-13 14.45.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/f5e357fa-ea12-218a-8944-7f53ff2b2c2b.png">
・ダイアログボックスにユーザー情報を入力して、[OK]をクリックします。
※ ユーザーの作成時にアクセスキーを作成したい場合は「このユーザーのAccessKeyを自動生成」を選んでください。
<img width="1216" alt="スクリーンショット 2018-05-13 14.47.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/17a28432-8c6a-33b5-4ed9-e730784036a6.png">

次は、ユーザーログオンパスワードを設定します。
RAMユーザーが管理コンソールにアクセスできるようにするには、そのユーザーのログオンパスワードを作成します。手順は次のとおりです。
・[ユーザーの詳細] ページに移動するユーザーを選択します。
・[コンソールへのログインの有効化]をクリックし、ダイアログボックスでユーザーの初期パスワードを設定します。また、最初のログオン時にユーザーがこのパスワードを変更する必要があることを指定することもできます。
ログインパスワードを設定した後、 ユーザーの詳細ページで MFA、パスワードリセット、コンソールログオンを有効にすることもできます。
<img width="2312" alt="スクリーンショット 2018-05-13 15.17.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/c6c81bab-f1c4-04f3-7c78-5dc522ea752a.png">

####■RAMグループ
AlibabaCloudアカウントで多数のRAMユーザーを作成した場合は、ユーザーとその権限を管理しやすくするために、グループ単位でユーザーを管理することをお勧めします。

RAMグループ作成手順は次のとおりです。
・[グループ管理] > [新規グループ] を選択します。
<img width="2816" alt="スクリーンショット 2018-05-13 15.24.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/90150772-4c8d-fda3-9553-04add572c172.png">
・ポップアップウィンドウで、新しいグループの名前を入力して、[OK]をクリックします。
<img width="1208" alt="スクリーンショット 2018-05-13 15.26.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/5c1448fb-64f9-9b14-f09c-fabd2ab6327f.png">

RAMグループにユーザー追加手順は次のとおりです。
・グループ管理画面から、グループ名を選択して、[グループの詳細] ページに移動します。このページの [グループメンバー管理] にグループのメンバーが表示されます。
・[グループのメンバーの編集] を選択し、先ほど作成したRAMユーザーをグループに追加して、[OK]をクリックします。
<img width="2808" alt="スクリーンショット 2018-05-13 15.33.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/2dd41777-7fe5-b912-94a7-7e84eefb0c56.png">
<img width="1504" alt="スクリーンショット 2018-05-13 15.34.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/e307a59b-74d6-7b60-e5a5-08163635e2a8.png">

RAMグループに権限付与手順は次のとおりです。
・グループ管理画面から、「許可」リンクをクリックして、[グループの権限付与ポリシーの編集] ページに移動します。
<img width="2828" alt="スクリーンショット 2018-05-13 21.59.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/7becd137-7992-b522-62fc-ae579d0adb2d.png">
・グループ用権限付与ポリシーの編集ウィンドウで、グループに付与する必要なポリシーを選択して、[OK]をクリックします。
<img width="1504" alt="スクリーンショット 2018-05-13 22.00.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/17fb54e8-a6a2-8db1-341a-be71fbb7bf42.png">

####■RAMポリシー
RAMポリシーとは、権限セットを記述するシンプルな言語仕様のタイプです。
RAMは、システムアクセスポリシーとカスタマイズアクセスポリシーの2種類の権限付与ポリシーに対応しています。
・AlibabaCloudによって管理されているシステムアクセスポリシーは、使用できますが、変更することはできません。システムアクセスポリシーのバージョンは自動的に更新されます。※前述のRAMグループに権限付与手順に、使用したポリシーはシステムアクセスポリシーです。
・ユーザー自身が管理するカスタマイズアクセスポリシーについては、作成したり削除したりできます。また、ポリシーのバージョンは、ユーザー自身で管理する必要があります。

カスタマイズアクセスポリシーの作成手順は次のとおりです。
・左ナビゲーションで、「権限付与ポリシー管理」をクリックし、ページ右上の「権限付与ポリシーを作成」ボタンをクリックします。
<img width="2808" alt="スクリーンショット 2018-05-13 23.26.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/b6da23ce-102c-0d36-480d-8df5736a60f1.png">
・権限付与ポリシーの作成ページに、１つのポリシーのテンプレートを選定します。
<img width="1512" alt="スクリーンショット 2018-05-13 23.27.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/60b3501b-264b-65b5-2d30-a1f4c02e197c.png">
・ポリシー名とポリシーの内容を入力して、「権限付与ポリシーを作成」ボタンをクリックします。
ポリシーの構文仕様は[Alibaba Cloudの公式ドキュメント](https://jp.alibabacloud.com/help/doc-detail/28663.htm?spm=a21mg.p38356.b99.28.6a4b4cb3IMoa8G)をご参考ください。
<img width="1502" alt="スクリーンショット 2018-05-13 23.28.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/c6bd4f70-e388-1906-5d2e-6ff9e945a2aa.png">
<img width="2816" alt="スクリーンショット 2018-05-13 23.31.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/4a8565d5-d6ec-062c-6048-62dae02f520f.png">

####■RAMロール
RAMユーザーと同様に、RAMロールもRAM IDの一種です。RAMユーザーと比較して、RAMロールは仮想ユーザーです。つまり、RAMロールにはID資格情報がなく、信頼できるAlibabaCloudアカウントが引き受ける必要があります。主にクロスアカウントアクセス、および一時的な承認アクセスに使用されます。



RAMロールの作成手順は次のとおりです。
・左ナビゲーションで、ロール管理を選択し、「新規ロール」ボタンをクリックします。
<img width="2808" alt="スクリーンショット 2018-05-13 23.57.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/37dba81c-86f1-80e3-09cf-cd61a759bba8.png">
・ロール作成ウィンドウで、「ユーザーロール」を選択します。
<img width="1414" alt="スクリーンショット 2018-05-13 23.57.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/9f0867b0-e0a0-7538-3933-bd73df80e79d.png">
・割当対象アカウントを選択し、「次へ」をクリックします。
<img width="1406" alt="スクリーンショット 2018-05-13 23.57.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/dfee6ecf-da4b-d78a-008f-e64259244e50.png">
・ロール名を入力し(補足はオプション)、「作成」ボタンをクリックします。
<img width="1412" alt="スクリーンショット 2018-05-13 23.58.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/41c61634-18da-a9c7-e343-97349f3bd1e5.png">
・ロール作成後、「閉じる」をクリックして完了します。
<img width="1406" alt="スクリーンショット 2018-05-13 23.58.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/daf0bbc6-b943-69df-726d-70d01aea0308.png">
<img width="2826" alt="スクリーンショット 2018-05-13 23.59.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/256080/f2f1a885-ccb0-2cf3-21fc-79a7bf48a9d2.png">
　※作成後の権限付与方法は、前述のRAMグループの権限付与と同様です。

## おわりに
以上、RAMの概要とRAMの4つのコアな機能（RAMユーザ、RAMグループ、RAMポリシー、およびRAMロール）を紹介しました。
各コア機能のもっと複雑な利用方法は、また、今後紹介していきたいと思います。