RAM ポリシーを使用して、クラウドアシスタントコマンドの実行を、root または system 以外の一般ユーザーに制限します。
前提条件
Elastic Compute Service (ECS) インスタンスに一般ユーザーが作成されていること。本トピックでは、user01 と user02 を例として使用します。
背景
デフォルトでは、Cloud Assistant は、Linux では root として、Windows では system として、ECS インスタンス上で最高の権限でコマンドを実行します。
RAM ポリシーを使用して、root または system による Cloud Assistant コマンドの実行を拒否し、user01 や user02 などの通常のユーザーにのみ権限を付与できます。
Linuxインスタンスにおける一般ユーザーの設定
RAM ユーザーが Linux インスタンスで root として Cloud Assistant コマンドを実行できないようにするには、次の手順に従います。
-
Alibaba Cloud アカウントでRAM コンソールにログインします。
-
RAM ユーザーを作成します。
RAM ユーザーの設定例:
パラメーター
例
[ログイン名]
commandUser
[表示名]
commandUser
[アクセスモード]
[コンソールアクセス] と [プログラムアクセス] の両方を選択します (このトピックでは両方を使用します)。
説明最小権限の原則に従い、必要なアクセスモードのみを選択してください。
[パスワードの設定]
[パスワードを自動的に生成] を選択します。
[パスワードリセット]
[次回ログオン時に必須] を選択します。
[多要素認証 (MFA)]
[不要] を選択します。
作成後、ユーザー名、パスワード、AccessKey を保存してください。
-
クラウドアシスタント用のカスタムポリシーを作成します。

commandUserPolicyという名前のポリシーを作成します。以下に 2 つの例を示します。必要に応じて変更してください。-
user01とuser02が Cloud Assistant コマandを実行できるようにします:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringEquals": { "ecs:CommandRunAs": [ "user01", "user02" ] } } } ], "Version": "1" }説明他のユーザーに権限を付与するには、
Conditionブロックでユーザー名を追加または変更します。 -
rootとsystemによる Cloud Assistant コマンドの実行を禁止します:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringNotEqualsIgnoreCase": { "ecs:CommandRunAs": [ "system", "root" ] } } } ], "Version": "1" }説明他のユーザーを制限するには、
Conditionブロックでユーザー名を追加または変更します。
-
-
RAM ユーザーに ECS の読み取り専用権限とクラウドアシスタントの権限を付与します。

-
ECS 読み取り専用:[AliyunECSReadOnlyAccess] を選択します。
-
Cloud Assistant : [commandUserPolicy] (前の手順で作成済み) を選択します。
-
-
RAM ユーザーとして Alibaba Cloud コンソールにログインします。
-
クラウドアシスタントコマンドを実行して検証します。詳細については、「コマンドの作成と実行」をご参照ください。
-
コンソールで、コマンドを実行するユーザーを指定します。

user01はコマンドの実行に成功しますが、rootではエラーが返されます。 -
CLI では、
user01はコマンドを正常に実行しますが、rootはエラーを返します。
-
Windowsインスタンスにおける一般ユーザーの設定
Windows インスタンスでクラウドアシスタントコマンドを実行するには、ユーザー名とパスワードが必要です。Windows のログオンパスワードを暗号化されたパラメーターとして CloudOps Orchestration Service に保存し、Key Management Service (KMS) で暗号化します。詳細については、「CloudOps Orchestration Service とは」および「Key Management Service とは」をご参照ください。
RAM ユーザーが Cloud Assistant コマandを root または system として実行できないようにするには、次の手順に従います。
-
Alibaba Cloud アカウントでRAM コンソールにログインします。
-
RAM ユーザーを作成します。
RAM ユーザーの設定例:
パラメーター
例
[ログイン名]
commandUser
[表示名]
commandUser
[アクセスモード]
[コンソールアクセス] と [プログラムアクセス] の両方を選択します (このトピックでは両方を使用します)。
説明最小権限の原則に従い、必要なアクセスモードのみを選択してください。
[パスワードの設定]
[パスワードを自動的に生成] を選択します。
[パスワードリセット]
[次回ログオン時に必須] を選択します。
[多要素認証 (MFA)]
[不要] を選択します。
作成後、ユーザー名、パスワード、AccessKey を保存してください。
-
クラウドアシスタントと KMS 用のカスタムポリシーを作成します。
-
クラウドアシスタントの権限:
commandUserPolicyという名前のポリシーを作成します。以下に 2 つの例を示します。必要に応じて変更してください。-
user01とuser02が Cloud Assistant コマandを実行できるようにします:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringEquals": { "ecs:CommandRunAs": [ "user01", "user02" ] } } } ], "Version": "1" }説明他のユーザーに権限を付与するには、
Conditionブロックでユーザー名を追加または変更します。 -
rootとsystemによる Cloud Assistant コマンドの実行を禁止します:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringNotEqualsIgnoreCase": { "ecs:CommandRunAs": [ "system", "root" ] } } } ], "Version": "1" }説明他のユーザーを制限するには、
Conditionブロックでユーザー名を追加または変更します。
-
-
KMS の権限:
kmsPolicyという名前のポリシーを作成します。 詳細については、「一般的な権限承認ポリシーの例」をご参照ください。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:Describe*", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "*" ] } ] }
-
-
RAM ユーザーに ECS、OOS、クラウドアシスタント、KMS の権限を付与します。

-
ECS 読み取り専用: [AliyunECSReadOnlyAccess] を選択します。
-
OOS 読み取り専用:[AliyunOOSReadOnlyAccess] を選択します。
-
Cloud Assistant: [commandUserPolicy] (前の手順で作成) を選択します。
-
KMS: [kmsPolicy] を選択します。(前の手順で作成)
-
-
Windows インスタンス用の RAM ロールを設定します。
-
RAM ロール用のカスタムポリシーを作成します。
ポリシーの例:
{ "Version": "1", "Statement": [ { "Action": [ "kms:Decrypt" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "oos:GetSecretParameter" ], "Effect": "Allow", "Resource": "*" } ] } -
サービス RAM ロールを作成します。
設定例:
パラメーター
例
[信頼されたエンティティの種類]
[Alibaba Cloud サービス] を選択します。
[信頼されたサービス]
[ECS] を選択します。
[ロール名]
AxtSecretRamRole
-
RAM ロールに権限を付与します。
-
-
Windows のログオンパスワードを保存するために、OOS で暗号化されたパラメーターを作成します。
説明OOS の暗号化されたパラメーターは、ECS インスタンスと同じリージョンに存在する必要があります。
user01の値の例:パラメーター
例
[パラメーター名]
axtSecretPassword
[KMS キー ID]
Use the default [Default Service CMK].
[値]
user01のログインパスワード。 -
RAM ユーザーとして Alibaba Cloud コンソールにログインします。
-
クラウドアシスタントコマンドを実行して検証します。詳細については、「コマンドの作成と実行」をご参照ください。
Windows インスタンスでクラウドアシスタントコマンドを実行して、権限を検証します。
-
コンソールで、ユーザーと OOS の暗号化されたパラメーターを指定します。

user01はコマンドを正常に実行しますが、systemはエラーを返します。 -
CLI では、
user01はコマンドの実行に成功しますが、systemではエラーが返されます。
-