Resource Access Management (RAM) のシステムポリシーがビジネス要件を満たさない場合は、カスタムポリシーを作成して最小権限の原則を実装できます。カスタムポリシーを使用すると、権限を詳細に管理し、リソースアクセスのセキュリティを向上させることができます。このトピックでは、Elastic Compute Service (ECS) のカスタムポリシーを設定する方法と、カスタムポリシーのサンプルについて説明します。
背景情報
カスタムポリシーの作成方法については、「カスタムポリシーの作成」をご参照ください。
カスタムポリシーを作成する前に、ポリシーの基本的な要素と構文を理解しておくことを推奨します。詳細については、「ポリシー要素」および「ポリシーの構造と構文」をご参照ください。
複数のポリシーがどのように有効になるかについては、「ポリシーの評価プロセス」をご参照ください。
カスタムポリシーのサンプル
RAM ユーザーに従量課金 ECS インスタンスの作成権限を付与するカスタムポリシー
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:DescribeImages",
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches",
"ecs:DescribeSecurityGroups",
"ecs:DescribeKeyPairs",
"ecs:DescribeTags",
"ecs:RunInstances"
],
"Resource": "*"
}
],
"Version": "1"
}
RAM ユーザーにサブスクリプション ECS インスタンスの作成権限を付与するカスタムポリシー
bss 関連の API 操作を呼び出して、サブスクリプション注文のクエリおよび支払いを行うことができます。対応するシステムポリシーは AliyunBSSOrderAccess です。
RunInstances 操作を呼び出してサブスクリプション ECS インスタンスを作成する際に、autoPay を true に設定した場合、bss 関連の API 操作を呼び出すための権限は必要ありません。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:DescribeImages",
"vpc:DescribeVpcs",
"vpc:DescribeVSwitches",
"ecs:DescribeSecurityGroups",
"ecs:DescribeKeyPairs",
"ecs:DescribeTags",
"ecs:RunInstances",
"bss:DescribeOrderList",
"bss:DescribeOrderDetail",
"bss:PayOrder",
"bss:CancelOrder"
],
"Resource": "*"
}
],
"Version": "1"
}
RAM ユーザーに ECS インスタンスの再起動権限を付与するカスタムポリシー
次のポリシーは、権限を付与された RAM ユーザーが ECS インスタンスを再起動できることを示します。ECS インスタンスは、RAM ユーザーに対して多要素認証 (MFA) が有効になっており、その RAM ユーザーが MFA を使用してログインした場合にのみ再起動できます。この場合、`Condition` 要素内の `acs:MFAPresent` 条件キーは `true` に設定されます。
{
"Statement": [
{
"Action": "ecs:RebootInstance",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"Bool": {
"acs:MFAPresent": "true"
}
}
}
],
"Version": "1"
}RAM ユーザーに特定の ECS インスタンスの管理権限を付与するカスタムポリシー
次のポリシーは、権限を付与された RAM ユーザーが Alibaba Cloud アカウント配下のすべての ECS インスタンスを閲覧できるが、管理できるのは `i-001` ECS インスタンスのみであることを示します。
{
"Statement": [
{
"Action": "ecs:*",
"Effect": "Allow",
"Resource": "acs:ecs:*:*:instance/i-001"
},
{
"Action": "ecs:Describe*",
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}RAM ユーザーにワークベンチを使用して特定の ECS インスタンスに接続する権限を付与するカスタムポリシー
次のポリシーは、権限を付与された RAM ユーザーが Alibaba Cloud アカウント内のすべての ECS インスタンスとリソースを閲覧できるが、ワークベンチを使用して接続できるのは i-001 ECS インスタンスのみであることを示します。
{
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ecs-workbench:LoginInstance",
"Resource": "acs:ecs-workbench:*:*:workbench/i-001"
}
],
"Version": "1"
}RAM ユーザーが VNC を使用して ECS インスタンスに接続することを禁止するカスタムポリシー
次のポリシーは、Virtual Network Computing (VNC) を使用してすべての ECS インスタンスに接続することを禁止します。
{
"Statement": [
{
"Effect": "Deny",
"Action": "ecs:DescribeInstanceVncUrl",
"Resource": "*"
}
],
"Version": "1"
}RAM ユーザーに特定リージョンの ECS インスタンスの閲覧権限を付与するカスタムポリシー
次のポリシーは、権限を付与された RAM ユーザーが中国 (青島) リージョンの ECS インスタンスを閲覧できるが、このリージョン内のディスクやスナップショットは閲覧できないことを示します。
{
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:Describe*",
"Resource": "acs:ecs:cn-qingdao:*:instance/*"
}
],
"Version": "1"
}RAM ユーザーに Alibaba Cloud アカウント内のセキュリティグループの管理権限を付与するカスタムポリシー
次のポリシーは、権限を付与された RAM ユーザーが Alibaba Cloud アカウント内の ECS セキュリティグループを管理できることを指定します。
{
"Version": "1",
"Statement": [
{
"Action": "ecs:*SecurityGroup*",
"Resource": "*",
"Effect": "Allow"
}
]
}RAM ユーザーにインスタンス RAM ロールの作成権限を付与するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs: CreateInstance",
"ecs: AttachInstanceRamRole",
"ecs: DetachInstanceRAMRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "*"
}
]
}
RAM ユーザーに既存の ECS インスタンスとブロックストレージデバイスに関する情報のクエリ権限を付与するカスタムポリシー
{
"Statement": [
{
"Effect": "Allow",
"Action": ["ecs:DescribeInstances", "ecs:DescribeDisks"],
"Resource": "*"
}
],
"Version": "1"
}
RAM ユーザーに節約プランの購入権限を付与するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "bssapi:CreateSavingsPlansInstance",
"Resource": "*"
}
]
}RAM ユーザーが ECS インスタンスを作成する際にデフォルト VPC を作成する権限を拒否するカスタムポリシー
ECS では、RAM ユーザーを使用して、異なるビジネス間の操作を分離できます。デフォルトでは、`AliyunECSFullAccess` 権限を付与された RAM ユーザーは、ECS インスタンスの作成、表示、再起動など、ECS リソースに対する操作を実行できます。RAM ユーザーが ECS インスタンスを作成する際に、利用可能な Virtual Private Cloud (VPC) がないリージョンでデフォルト VPC を作成する権限を拒否し、RAM ユーザーの他の権限は保持したい場合は、カスタムポリシーを設定できます。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"StringEquals": {
"vpc:CreateDefaultVpc": ["true"]
}
}
}
]
}
RAM ユーザーにプレフィックスリストの使用権限を付与するカスタムポリシー
{
"Statement": [
{
"Action": [
"ecs:CreatePrefixList",
"ecs:ModifyPrefixList",
"ecs:DescribePrefixLists",
"ecs:DescribePrefixListAssociations",
"ecs:DescribePrefixListAttributes",
"ecs:DeletePrefixList"
],
"Resource": "*",
"Effect": "Allow"
}
],
"Version": "1"
}
RAM ユーザーにクラウドアシスタントの使用権限を付与するカスタムポリシー
詳細については、「RAM ユーザーにクラウドアシスタントの使用権限を付与する」トピックの「クラウドアシスタントエージェント固有のカスタムポリシーのサンプル」セクションをご参照ください。
RAM ユーザーに OSS バケットの読み取り権限を付与するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": ["oss:GetObject", "oss:GetBucketLocation", "oss:GetBucketInfo"],
"Resource": "*",
"Effect": "Allow"
}
]
}
RAM ユーザーに OSS バケットの読み書き権限を付与するカスタムポリシー
{
"Version": "1",
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:GetBucketLocation",
"oss:GetBucketInfo",
"oss:PutObject",
"oss:DeleteObject",
"oss:AbortMultipartUpload",
"oss:ListMultipartUploads",
"oss:ListParts"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
RAM ユーザーに HTTPS 経由でのみ ECS リソースにアクセスする権限を付与するカスタムポリシー
{
"Statement": [
{
"Action": "ecs:*",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"Bool": {
"acs:SecureTransport": "true"
}
}
}
],
"Version": "1"
}RAM ユーザーに暗号化ディスクのみを作成する権限を付与するカスタムポリシー
高いセキュリティコンプライアンス要件を持つ特定の企業では、その企業の Alibaba Cloud アカウントに属するすべての RAM ユーザーがデータの機密性を確保するためにデータ暗号化を必要とします。カスタムポリシーを RAM ユーザーにアタッチして、ECS インスタンス用に暗号化ディスクのみを作成する権限を RAM ユーザーに付与できます。
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance"
],
"Resource": "*",
"Condition": {
"StringLike": {
"ecs:IsDiskEncrypted": "*false*"
}
},
"Effect": "Deny"
},
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ecs:IsSystemDiskEncrypted": "false"
}
},
"Effect": "Deny"
},
{
"Action": "ecs:CreateDisk",
"Resource": "*",
"Condition": {
"StringLike": {
"ecs:IsDiskEncrypted": "*false*"
}
},
"Effect": "Deny"
}
]
}RAM ユーザーに CMK を使用して暗号化されたディスクのみを作成する権限を付与するカスタムポリシー
ECS インスタンスを購入するか、データディスクを作成する際に、次のカスタムポリシーを設定して、RAM ユーザーにカスタマーマスターキー (CMK) を使用する暗号化ディスクのみを作成する権限を付与できます。カスタムポリシーを RAM ユーザーにアタッチすると、ディスクを暗号化するために CMK のみを選択できるようになります。
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance"
],
"Resource": "*",
"Condition": {
"StringLike": {
"ecs:IsDiskByokEncrypted": "*false*"
}
},
"Effect": "Deny"
},
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ecs:IsSystemDiskByokEncrypted": "false"
}
},
"Effect": "Deny"
},
{
"Action": "ecs:CreateDisk",
"Resource": "*",
"Condition": {
"StringLike": {
"ecs:IsDiskByokEncrypted": "*false*"
}
},
"Effect": "Deny"
}
]
}RAM ユーザーにカスタムイメージのみを使用して ECS インスタンスを作成する権限を付与するカスタムポリシー
ECS インスタンスを購入する際に、次のカスタムポリシーを作成して、RAM ユーザーにカスタムイメージのみを使用して ECS インスタンスを作成する権限を付与できます。
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance"
],
"Effect": "Deny",
"Resource": "acs:ecs:<Region ID>:*:instance/*",
"Condition": {
"StringNotEquals": {
"ecs:ImageSource": "Custom"
}
}
}
]
}RAM ユーザーが root ユーザーとして ECS インスタンスにログインすることを禁止するカスタムポリシー
ECS インスタンスの購入、ECS インスタンスのシステムディスクの置き換え、ECS インスタンスへのシステムディスクのアタッチ、または ECS インスタンスのパスワードのオンラインリセットを行う際に、次のカスタムポリシーを作成して、RAM ユーザーが root ユーザーとして ECS インスタンスにログインすることを禁止できます。カスタムポリシーを RAM ユーザーにアタッチすると、root ユーザーとして ECS インスタンスにログインできなくなります。
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance",
"ecs:CreateOrder",
"ecs:ReplaceSystemDisk",
"ecs:AttachDisk",
"ecs:InvokeCommand"
],
"Resource": "*",
"Condition": {
"Bool": {
"ecs:LoginAsNonRoot": [
"false"
]
}
},
"Effect": "Deny"
}
]
}RAM ユーザーがユーザー名とパスワードを使用して ECS インスタンスにログインすることを禁止するカスタムポリシー
ECS インスタンスの購入、ECS インスタンスのシステムディスクの置き換え、ECS インスタンスへのシステムディスクのアタッチ、または ECS インスタンスのパスワードのオンラインまたはオフラインでのリセットを行う際に、次のカスタムポリシーを作成して、RAM ユーザーがユーザー名とパスワードを使用して ECS インスタンスにログインすることを禁止できます。カスタムポリシーを RAM ユーザーにアタッチすると、キーペアまたはセッションマネージャーのみを使用して、ユーザー名とパスワードを提供せずに ECS インスタンスにログインできるようになります。
ポリシーステートメントの Condition 要素で ecs:ImagePlatform パラメーターを設定することで、ユーザー名とパスワードを入力してログインできるインスタンスの範囲を制限できます。たとえば、ecs:ImagePlatform パラメーターを linux に設定した場合、ユーザー名とパスワードを入力して Windows インスタンスにはログインできますが、Linux インスタンスにはログインできません。
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance",
"ecs:CreateOrder",
"ecs:ReplaceSystemDisk"
],
"Resource": "*",
"Condition": {
"Bool": {
"ecs:PasswordCustomized": [
"true"
]
},
"StringEquals": {
"ecs:ImagePlatform": "linux"
}
},
"Effect": "Deny"
},
{
"Action": [
"ecs:ModifyInstanceAttribute",
"ecs:InvokeCommand",
"ecs:AttachDisk"
],
"Resource": "*",
"Condition": {
"Bool": {
"ecs:PasswordCustomized": [
"true"
]
}
},
"Effect": "Deny"
}
]
}RAM ユーザーが ECS インスタンスのイメージにプリセットされたパスワードを使用してインスタンスにログインすることを禁止するカスタムポリシー
ECS インスタンスを購入するか、ECS インスタンスのシステムディスクを置き換える際に、次のカスタムポリシーを設定して、RAM ユーザーがインスタンスのイメージにプリセットされたパスワードを使用してインスタンスにログインすることを禁止できます。カスタムポリシーを RAM ユーザーにアタッチすると、ECS インスタンスのイメージにプリセットされたパスワードを使用してインスタンスに接続できなくなります。
{
"Version": "1",
"Statement": [
{
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance",
"ecs:CreateOrder",
"ecs:ReplaceSystemDisk"
],
"Resource": "*",
"Condition": {
"Bool": {
"ecs:PasswordInherit": [
"true"
]
}
},
"Effect": "Deny"
}
]
}RAM ユーザーが権限付与オブジェクトとして 0.0.0.0/0 を含むセキュリティグループルールを作成することを禁止するカスタムポリシー
セキュリティグループのインバウンドルールが 0.0.0.0/0 を許可している場合、すべての外部 IP アドレスがそのセキュリティグループ内の ECS インスタンスにアクセスできます。これにより、セキュリティリスクが増大する可能性があります。RAM ユーザーが権限付与オブジェクトとして 0.0.0.0/0 を含むセキュリティグループルールを作成すること、および ECS インスタンス作成時にデフォルトのセキュリティグループを使用することを禁止するカスタムポリシーを設定することを推奨します。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ecs:AuthorizeSecurityGroup",
"ecs:ConfigureSecurityGroupPermissions",
"ecs:ModifySecurityGroupRule"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringLike": {
"ecs:SecurityGroupIpProtocols": [
"TCP"
]
},
"ForAnyValue:CIDRInRange": {
"ecs:SecurityGroupSourceCidrIps": [
"0.0.0.0/0"
]
}
}
},
{
"Effect": "Deny",
"Action": [
"ecs:CreateInstance",
"ecs:RunInstances"
],
"Resource": "*",
"Condition": {
"Bool": {
"ecs:NotSpecifySecureGroupId": [
"true"
]
}
}
}
]
}RAM ユーザーがインスタンスメタデータにアクセスする際にセキュリティ強化モードのみを使用できるようにするカスタムポリシー
権限ポリシーを使用して、Alibaba Cloud アカウント配下のすべての RAM ユーザーが、RunInstances または CreateInstance 操作を呼び出して ECS インスタンスを作成する場合、あるいは ModifyInstanceMetadataOptions 操作を呼び出して既存の ECS インスタンスのメタデータを変更する場合に、セキュリティ強化モードでのみインスタンスメタデータにアクセスできるように許可できます。以下のサンプルコードは、ポリシーの内容の例です。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ecs:RunInstances",
"ecs:CreateInstance",
"ecs:ModifyInstanceMetadataOptions"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ecs:SecurityHardeningMode": ["false"]
}
}
}
]
}