SchedulerX では、Resource Access Management (RAM) を使用して、複数のユーザーやユーザーグループに一度に権限を付与できます。 RAM はきめ細かい権限管理を提供し、最小権限の原則に基づいて権限を付与できます。 これにより、Alibaba Cloud アカウントの AccessKey ペアを他のユーザーと共有する必要がなくなり、セキュリティリスクを効果的に軽減できます。 このトピックでは、RAM ユーザーに特定の操作を実行するための権限を付与する方法について説明します。
背景情報
ScheudlerX の権限を定義する 2 種類の RAM ポリシーを RAM ユーザーにアタッチして、迅速な権限承認を行うことができます。 2 種類の RAM ポリシーの有効範囲は異なります。 ビジネス要件に基づいて RAM ポリシーをアタッチできます。 よりきめ細かく RAM ユーザーに権限を付与する場合は、カスタム RAM ポリシーを作成できます。 詳細については、このトピックの「カスタムポリシーの例」セクションをご参照ください。
RAM ユーザーにリソースを作成するための権限を付与する
デフォルトでは、RAM ユーザーは SchedulerX でリソースを作成、表示、または管理するための権限を持っていません。 RAM ユーザーにリソースを作成するための権限を付与できます。 デフォルトでは、RAM ユーザーによって作成されたすべてのリソースは、RAM ユーザーが読み取りおよび書き込みできます。
手順:
RAM コンソール にログオンします。
カスタムポリシーを作成します。 詳細については、「カスタムポリシーの作成」をご参照ください。 次のサンプルコードは、カスタム RAM ポリシーの例を示しています。 次のコードを実行して、RAM ユーザーまたはユーザーグループに名前空間と名前空間内のインスタンスグループを作成するための権限を付与できます。 RAM ユーザーは、RAM ユーザーが作成したインスタンスグループへのアクセス権限のみを持ちます。 RAM ユーザーが別の RAM ユーザーによって作成されたインスタンスグループとリソースへのアクセス権限を必要とする場合は、カスタムポリシーを作成して RAM ユーザーにアタッチする必要があります。 詳細については、このトピックの「カスタムポリシーの例」セクションをご参照ください。
{ "Version": "1", "Statement": [ { "Action": ["edas:CreateSchedulerxNamespace*", // 名前空間とインスタンスグループを作成するためのアクション "edas:CreateSchedulerxAppGroup*"], // インスタンスグループを作成するためのアクション "Effect": "Allow", "Resource": "acs:edas:*:*:*" } ] }
オプション。 RAM ユーザーまたはユーザーグループを作成します。 詳細については、「RAM ユーザーの作成」または「RAM ユーザーグループの作成」をご参照ください。 RAM ユーザーまたはユーザーグループが既に存在する場合は、この手順をスキップできます。
手順 2 で作成したカスタムポリシーを単一の RAM ユーザーにアタッチします。 詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
手順 2 で作成したカスタムポリシーをユーザーグループにアタッチし、RAM ユーザーをユーザーグループに追加します。
ポリシーをユーザーグループにアタッチします。 詳細については、「RAM ユーザーグループへの権限の付与」をご参照ください。
RAM ユーザーをユーザーグループに追加します。 詳細については、「RAM ユーザーを RAM ユーザーグループに追加する」トピックの「方法 2: [グループ] ページで RAM ユーザーを RAM ユーザーグループに追加する」セクションをご参照ください。
管理者としてリソースを作成し、RAM ユーザーに権限を付与する
ほとんどの場合、ソフトウェアプロジェクトの O&M 担当者のみがリソースを作成するための権限を持っています。 開発担当者は、読み取りと管理の権限のみを持ちます。 O&M 担当者のために管理者ロールを作成して、SchedulerX のすべてのリソースを管理するための権限を付与できます。 その後、管理者は名前空間とインスタンスグループを作成できます。 RAM ユーザーが名前空間とインスタンスグループにアクセスする場合、管理者は名前空間とインスタンスグループへのアクセス権限を定義するポリシーを作成し、そのポリシーを RAM ユーザーにアタッチします。
手順:
RAM コンソール にログオンします。
カスタムポリシーを作成します。 詳細については、「カスタムポリシーの作成」をご参照ください。 次のサンプルコードは、カスタム RAM ポリシーの例を示しています。 このコードを実行して、RAM ユーザーまたはユーザーグループに SchedulerX の管理者権限を付与できます。 その後、RAM ユーザーまたはユーザーグループは SchedulerX のすべてのリソースを管理できます。
{ "Statement": [ { "Action": "edas:*Schedulerx*", // SchedulerX のすべてのリソースを管理するためのアクション "Effect": "Allow", "Resource": [ "acs:edas:*:*:*" ] } ], "Version": "1" }
オプション。 RAM ユーザーまたはユーザーグループを作成します。 詳細については、「RAM ユーザーの作成」または「RAM ユーザーグループの作成」をご参照ください。 RAM ユーザーまたはユーザーグループが既に存在する場合は、この手順をスキップできます。
手順 2 で作成したカスタムポリシーを単一の RAM ユーザーにアタッチします。 詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
手順 2 で作成したカスタムポリシーをユーザーグループにアタッチし、RAM ユーザーをユーザーグループに追加します。
ポリシーをユーザーグループにアタッチします。 詳細については、「RAM ユーザーグループへの権限の付与」をご参照ください。
RAM ユーザーをユーザーグループに追加します。 詳細については、「RAM ユーザーを RAM ユーザーグループに追加する」トピックの「方法 2: [グループ] ページで RAM ユーザーを RAM ユーザーグループに追加する」セクションをご参照ください。
SchedulerX 権限
デフォルトでは、Alibaba Cloud アカウントは、アカウント内のすべてのリソースを管理するための権限を持っています。 RAM を使用して、異なるユーザーに特定の権限を付与することをお勧めします。 SchedulerX では、一度に複数の RAM ユーザーまたはユーザーグループにポリシーをアタッチできます。 これにより、ユーザーごとに権限を付与する必要はありません。 次の表に、SchedulerX でサポートされている共有システムポリシーを示します。
システムポリシー | 説明 |
AliyunEDASFullAccess | Enterprise Distributed Application Service (EDAS) リソースを管理するための権限を提供します。 |
次のサンプルコードは、Action 要素と Resource 要素を含むカスタム RAM ポリシーの例を示しています。 SchedulerX によって定義されたルールに基づいてカスタムポリシーを作成できます。
プリンシパル構造
{
"Statement": [
{
"Action": "edas:*", // 許可されるアクション。 Action 要素の構成方法については、このトピックの「Action」セクションをご参照ください。
"Effect": "Allow",
"Resource": "*" // アクセスできるリソース。 Resource 要素の構成方法については、このトピックの「Resource」セクションをご参照ください。
}
],
"Version": "1",
}
Action
SchedulerX は、Action 要素を次の構造で定義します。
edas:${type}Schedulerx*
${type}
: ${type} パラメーターの有効な値は、Read、Manage、Delete、および Create です。 次の表に、有効な値と各値に関連する操作を示します。
有効な値 | 操作 |
Create | 名前空間、アプリケーション、ジョブ、およびワークフローを作成します。 |
Manage |
|
Delete | 名前空間、インスタンスグループ、ジョブ、およびワークフローを削除します。 |
Read | インスタンスグループ、ジョブ、ジョブインスタンス、ワークフロー、およびオンラインインスタンスをクエリします。 |
Resource
SchedulerX は、Resource 要素を次の構造で定義します。
acs:edas:${regionid}:${accountid}:namespace/${namespace_id}/${resourceType}/${resourceId}
パラメーター | 説明 |
| アクセスするリソースがデプロイされているリージョン。 デフォルト設定を使用する場合は、アスタリスク ( |
| アクセスするリソースが属する Alibaba Cloud アカウント。 デフォルト設定を使用する場合は、アスタリスク ( |
| アクセスするリソースが属する名前空間の ID。
|
| アクセスするリソースのタイプ。 JobGroup の値は、SchedulerX のジョブグループを指定します。 ジョブはアプリケーションごとにグループ化されます。 |
| アクセスするリソースの ID。
|
カスタムポリシーの例
RAM ユーザーにすべてのリソースに対する管理権限を付与する
SchedulerX に対する管理権限を持つ RAM ユーザーは、SchedulerX のすべてのリソースに対してすべての操作を実行できます。 ポリシーの例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"edas:*Schedulerx*" // すべてのリソースに対するすべての操作
],
"Resource": [
"acs:edas:*:*:*"
]
}
]
}
RAM ユーザーにすべてのリソースに対する読み取り専用権限を付与する
SchedulerX に対する読み取り専用権限を持つ RAM ユーザーは、SchedulerX のすべてのリソースをクエリできます。 ポリシーの例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"edas:ReadSchedulerx*" // すべてのリソースに対する読み取り操作
],
"Resource": [
"acs:edas:*:*:*"
]
}
]
}
RAM ユーザーに指定された名前空間に対する管理権限を付与する
次のサンプルコードは、指定された名前空間内のアプリケーションとジョブリソースに対する管理権限を定義するカスタム RAM ポリシーの例を示しています。 指定された名前空間の ID は、EDAS コンソールの [マイクロサービス名前空間] ページから取得する必要があります。 この例では、指定された名前空間は ID-01 と ID-02 です。 このカスタムポリシーを持つ RAM ユーザーは、指定された名前空間内のすべてのリソースを管理およびスケジュールできます。 また、Action 要素の設定を変更して、前述のリソースへのアクセス権限を制限することもできます。 たとえば、Action 要素を edas:ReadSchedulerx に設定すると、このカスタムポリシーがアタッチされている RAM ユーザーは、指定された名前空間内のリソースをクエリすることのみができます。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"edas:*Schedulerx*" // 指定された名前空間内のすべてのリソースに対するすべての操作
],
"Resource": [
"acs:edas:*:*:namespace/Namespace ID-01/*", // 名前空間 ID-01
"acs:edas:*:*:namespace/Namespace ID-02/*" // 名前空間 ID-02
]
}
]
}
RAM ユーザーに指定されたアプリケーションに対する管理権限を付与する
次のサンプルコードは、特定のアプリケーションに対する管理権限を定義するカスタム RAM ポリシーの例を示しています。 Resource 要素は、RAM ユーザーに管理権限を付与するアプリケーションの ID を指定します。 また、Resource 要素にアスタリスク (*) を含めて、一度に複数のアプリケーションに対する管理権限を RAM ユーザーに付与することもできます。 たとえば、カスタムポリシーの Resource 要素に TestGroup* を含めると、カスタムポリシーは、指定された名前空間内で TestGroup で始まるすべてのアプリケーションに対する管理権限を定義します。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"edas:*Schedulerx*" // 指定されたアプリケーションに対するすべての操作
],
"Resource": [
"acs:edas:*:*:namespace/Namespace ID-01/JobGroup/TestGroup*", // 名前空間 ID-01 内の TestGroup で始まるすべてのアプリケーション
"acs:edas:*:*:namespace/Namespace ID-02/JobGroup/AppGroup" // 名前空間 ID-02 内の AppGroup アプリケーション
]
}
]
}