本文介紹如何使用Terraform建立角色並綁定權限原則。
前提條件
在開始之前,請您確保完成以下操作:
使用Terraform,您需要一個阿里雲帳號和存取金鑰(AccessKey)。 請在阿里雲控制台中的AccessKey管理頁面上建立和查看您的AccessKey。
已經安裝並配置了Terraform,具體操作請參見在本地安裝和配置Terraform和在Cloud Shell中使用Terraform。
操作步驟
建立RAM角色。
建立terraform.tf檔案,輸入以下內容,並儲存在當前的執行目錄中。
resource "alicloud_ram_role" "role" { name = "testRole" document = <<EOF { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "apigateway.aliyuncs.com", "ecs.aliyuncs.com" ] } } ], "Version": "1" } EOF description = "this is a role test." force = true }
運行terraform apply開始建立。
運行terraform show查看建立的角色。
建立自訂權限原則。
在terraform.tf檔案中增加以下內容。
resource "alicloud_ram_policy" "policy" { policy_name = "testPolicy" policy_document = <<EOF { "Statement": [ { "Action": [ "oss:ListObjects", "oss:GetObject" ], "Effect": "Deny", "Resource": [ "acs:oss:*:*:mybucket", "acs:oss:*:*:mybucket/*" ] } ], "Version": "1" } EOF description = "this is a policy test" force = true }
運行terraform apply開始建立。
運行terraform show查看建立的自訂權限原則。
為角色綁定權限原則。
在terraform.tf檔案中增加以下內容。
resource "alicloud_ram_role_policy_attachment" "attach" { policy_name = alicloud_ram_policy.policy.policy_name role_name = alicloud_ram_role.role.name policy_type = alicloud_ram_policy.policy.type }
運行terraform apply開始建立。
運行terraform show查看角色擁有的自訂許可權。
操作範例
provider "alicloud" {
}
resource "alicloud_ram_role" "role" {
name = "testRole"
document = <<EOF
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"apigateway.aliyuncs.com",
"ecs.aliyuncs.com"
]
}
}
],
"Version": "1"
}
EOF
description = "this is a role test."
force = true
}
resource "alicloud_ram_policy" "policy" {
policy_name = "testPolicy"
policy_document = <<EOF
{
"Statement": [
{
"Action": [
"oss:ListObjects",
"oss:GetObject"
],
"Effect": "Deny",
"Resource": [
"acs:oss:*:*:mybucket",
"acs:oss:*:*:mybucket/*"
]
}
],
"Version": "1"
}
EOF
description = "this is a policy test"
force = true
}
resource "alicloud_ram_role_policy_attachment" "attach" {
policy_name = alicloud_ram_policy.policy.policy_name
role_name = alicloud_ram_role.role.name
policy_type = alicloud_ram_policy.policy.type
}