Resource Management Service (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 ユーザーに Workbench を使用して特定の ECS インスタンスに接続する権限を付与するカスタムポリシー使用することでワークベンチ
次のポリシーは、承認された RAM ユーザーが Alibaba Cloud アカウントのすべての ECS インスタンスとリソースを表示できる一方で、Workbench を使用して 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 インスタンスに接続することを禁止するカスタムポリシー使用することでVNC
次のポリシーは、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 インスタンスを作成するときに、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 ユーザーにアタッチして、RAM ユーザーに ECS インスタンスの暗号化されたディスクのみを作成する権限を付与できます。
{
"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 ユーザーがルートユーザーとして ECS インスタンスにログインすることを禁止するカスタムポリシー
ECS インスタンスを購入する、ECS インスタンスのシステムディスクを交換する、システムディスクを ECS インスタンスにアタッチする、または ECS インスタンスのパスワードをオンラインでリセットする際に、RAM ユーザーがルートユーザーとして ECS インスタンスにログインすることを禁止する次のカスタムポリシーを作成できます。カスタムポリシーを RAM ユーザーにアタッチした後、ルートユーザーとして 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 ユーザーにアタッチした後、ユーザー名とパスワードを入力せずに、キーペアまたは Session Manager を使用してのみ 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": {
"StringLike": {
"ecs:SecurityGroupIpProtocols": [
"TCP"
]
},
"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"]
}
}
}
]
}