Enterprise Distributed Application Service (EDAS) で管理されるアプリケーションには、複数のサービスまたはサブシステムが含まれる場合があり、これらは異なるチームおよびメンバーによって開発・保守されることがあります。EDAS では、誰が、どのリソースに対して、どのような操作を実行できるかを制御する 2 種類の権限モデルを提供しており、アプリケーション、リソース、データの分離およびアクセスの制御を実現します。
権限モデル
EDAS では、以下の 2 種類の権限モデルをサポートしています:
Resource Access Management (RAM) ポリシー(推奨):細かい粒度でのポリシー駆動型アクセス制御です。各ポリシーは、ユーザーが特定のリソースに対して実行可能な具体的な操作を定義します。RAM ポリシーは最小権限の原則に従っており、ワイルドカード、条件式、および複数ポリシーの組み合わせをサポートします。
EDAS 定義の権限(レガシ):粗い粒度でのロールベースアクセス制御です。権限は操作とリソースをまとめてバンドルするため、個別の操作がどのリソースに適用されるかを独立して制御することはできません。
EDAS およびその他の Alibaba Cloud サービスの権限を統合されたシステムで一元管理するには、RAM をご使用いただくことを推奨します。RAM を用いたアクセス制御の設定方法については、「概要」をご参照ください。
組織内で引き続き EDAS 定義の権限をご利用の場合には、「EDAS 定義の権限の管理(非推奨)」をご参照ください。
アクセス評価の仕組み
両方の権限モデルが併存する場合、EDAS によるアクセス評価は以下のとおりです:
RAM ユーザーは常に RAM ポリシーによって制御されます。EDAS 定義の権限は適用されません。
AliyunEDASFullAccess を付与されたサブアカウントは、EDAS 定義の権限ではなく RAM ポリシーによって制御されます。
EDAS 定義の権限を付与されたサブアカウントは、RAM ユーザーへの移行が完了するまで、引き続き EDAS 定義の権限を使用します。
EDAS 定義の権限によって制御されているサブアカウントについては、RAM ユーザーへ切り替えることを推奨します。移行手順については、「EDAS 定義の権限を RAM ポリシーに置き換え」をご参照ください。
サブアカウントに付与された EDAS 定義の権限を管理するには、EDAS コンソールにログインし、当該サブアカウントがアクセス可能または不可とするリソースを指定してください。EDAS 定義の権限を RAM ポリシーに置き換えた後は、サブアカウントに対して EDAS 定義の権限を新たに付与することはできなくなります。サブアカウントは RAM ユーザーへ切り替えられ、EDAS に対する権限は RAM コンソールで RAM ユーザーに付与する必要があります。
RAM ポリシーが EDAS 定義の権限より優れている理由
より細かい粒度でのアクセス制御
EDAS 定義の権限では、APP1 および APP2 に対してデプロイおよび停止の権限を付与すると、サブアカウントは両方のアプリケーションに対して両方の操作を実行できます。つまり、どの操作がどのアプリケーションに適用されるかを分離して制御することはできません。
RAM ポリシーでは、操作とリソースが分離されています。たとえば、単一の RAM ユーザーに対して以下のような権限を付与できます:
APP1 および APP2 のデプロイ権限
APP2 および APP3 の権限を停止します
この場合、RAM ユーザーは APP1 および APP2 のデプロイは可能ですが、APP3 のデプロイはできません。また、APP2 および APP3 の停止は可能ですが、APP1 の停止はできません。
| EDAS で定義された権限 | RAM ポリシー |
|---|---|
![]() | ![]() |
| 操作とリソースをまとめてバンドルします。APP1 と APP2 に対するデプロイ権限と停止権限を持つサブアカウントは、両方のアプリケーションに対して両方の操作を実行できます。 | 各ポリシーステートメントは、特定の操作を特定のリソースに関連付けます。デプロイ権限と停止権限は、それぞれ異なるアプリケーションのセットを対象とします。 |
柔軟なポリシー構文
RAM ポリシーは、EDAS 定義の権限にはない以下の機能をサポートしています:
リソース識別子におけるワイルドカード:複数のリソースを一度にマッチさせることが可能
許可(Allow)および拒否(Deny)ステートメント:単一のポリシー内に併記することで、より精密な制御が可能
単一の RAM ユーザーへの複数ポリシーのアタッチ
条件式:ポリシーの定義に使用可能
例:1 つのアプリケーションを除くすべてのアプリケーションを表示
以下のポリシーでは、RAM ユーザーが 12345678 の ID を持つアプリケーションを除き、cn-beijing リージョン内のすべての EDAS アプリケーションを表示できるようになります:
{
"Statement": [
{
"Action": [
"edas:ReadApplication"
],
"Effect": "Allow",
"Resource": ["acs:edas:*:*:namespace/*/application/*"]
},
{
"Action": [
"edas:ReadApplication"
],
"Effect": "Deny",
"Resource": ["acs:edas:cn-beijing:*:namespace/*/application/12345678"]
}
],
"Version": "1"
}このポリシーには 2 つのステートメントが含まれています:
最初の文では、効果を
Allowに設定し、リソースパスでワイルドカード (*) を使用して、すべての名前空間のすべてのアプリケーションに一致させます。RAM ユーザーは任意の EDAS アプリケーションを表示できます。2 つ目のステートメントでは、
Deny効果を12345678の ID を持つアプリケーションに設定し、cn-beijingリージョンを対象とします。DenyはAllowよりも優先されるため、RAM ユーザーは当該アプリケーションを表示できません。
結果として、RAM ユーザーはアプリケーション 12345678 を除くすべてのアプリケーションを表示できます。
条件式を含むポリシー構文の完全なリファレンスについては、「ポリシーの概要」をご参照ください。
権限のマッピングリファレンス
EDAS 定義の権限は RAM ポリシーと等価ではなく、直接変換することはできません。ただし、EDAS 定義の権限を RAM ポリシーに置き換える際には、EDAS が大部分の権限を自動的に継承します。デフォルトでは、サブアカウントが EDAS リソース(アプリケーションやクラスターなど)に対して特定の操作を実行できるかどうかを定義する権限が、対応する RAM ユーザーに引き継がれます。
EDAS リソースは階層構造で整理されており、その構造は 名前空間 > クラスター/アプリケーション です。RAM ポリシー内のリソースパスはこの階層構造を反映しています。たとえば、acs:edas:*:*:namespace/*/application/${applicationId} は、任意の名前空間内の特定のアプリケーションを対象としています。
以下の表では、各 EDAS 定義の権限に対応する RAM ポリシーを示しています:
| EDAS 定義の権限 | RAM 操作 | RAM リソース |
|---|---|---|
| スーパー管理者(全権限) | edas:* | acs:edas:*:*:* |
| 代理 Alibaba Cloud アカウント | edas:ManageSystem | acs:edas:*:*:* |
| システム管理 — 操作ログの表示 | edas:ReadOperationLog | acs:edas:*:*:* |
| アプリケーション管理 — マイクロサービス名前空間の変更 | edas:ManageNamespace | acs:edas:*:*:namespace/${namespaceId} |
| アプリケーション管理 — マイクロサービス名前空間の照会 | edas:ReadNamespace | acs:edas:*:*:namespace/${namespaceId} |
| リソース管理 — クラスターの作成 | edas:CreateCluster | acs:edas:*:*:namespace/* |
| リソース管理 — クラスターの表示 | edas:ReadCluster | acs:edas:*:*:namespace/*/cluster/${clusterId} |
| リソース管理 — クラスターの管理および削除 | edas:ReadCluster, edas:ManageCluster | acs:edas:*:*:namespace/*/cluster/${clusterId} |
| アプリケーション管理 — アプリケーションの作成 | edas:CreateApplication | acs:edas:*:*:namespace/* |
| アプリケーション管理 — アプリケーションのデプロイ、起動、スケールアウト、および削除 | edas:ManageApplication, edas:ReadApplication | acs:edas:*:*:namespace/*/application/${applicationId} |
| アプリケーション管理 — アプリケーション情報の表示 | edas:ReadApplication | acs:edas:*:*:namespace/*/application/${applicationId} |
| アプリケーション管理 — コンテナの設定および Java 仮想マシン(JVM)パラメーターの設定 | edas:ConfigApplication, edas:ReadApplication | acs:edas:*:*:namespace/*/application/${applicationId} |
| アプリケーション管理 — ログディレクトリの設定 | edas:ManageAppLog, edas:ReadApplication | acs:edas:*:*:namespace/*/application/${applicationId} |
| Elastic Compute Service (ECS) リソースの購入 | edas:ECSPurchase | acs:edas:*:*:* |
| Server Load Balancer (SLB) リソースの購入 | edas:SLBPurchase | acs:edas:*:*:* |
| Log Service リソースの購入 | edas:SLSPurchase | acs:edas:*:*:* |

