All Products
Search
Document Center

Terraform:Buat dan otorisasi peran RAM menggunakan Terraform

Last Updated:Mar 14, 2026

Terraform adalah alat open source yang dapat Anda gunakan untuk melihat pratinjau, mengonfigurasi, dan mengelola sumber daya cloud secara aman dan efisien. Topik ini menjelaskan cara menggunakan Terraform untuk membuat peran RAM dan menyambungkan kebijakan akses.

Catatan

Kode contoh dalam tutorial ini mendukung eksekusi satu klik dan dapat dijalankan langsung. Jalankan dengan satu klik

Prasyarat

  • Untuk mengurangi risiko keamanan, kami menyarankan agar Anda menggunakan Pengguna Resource Access Management (RAM) dengan izin minimum yang diperlukan untuk melakukan operasi dalam tutorial ini. Untuk informasi selengkapnya, lihat Buat pengguna RAM dan Kelola izin pengguna RAM. Kebijakan akses yang diperlukan adalah sebagai berikut:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ram:GetRole",
            "ram:ListPoliciesForRole",
            "ram:ListRoles",
            "ram:CreateRole",
            "ram:DeleteRole",
            "ram:DetachPolicyFromRole",
            "ram:UpdateRole",
            "ram:GetPolicy",
            "ram:GetPolicyVersion",
            "ram:AttachPolicyToRole",
            "ram:CreatePolicy",
            "ram:CreatePolicyVersion",
            "ram:ListEntitiesForPolicy",
            "ram:ListPolicyVersions",
            "ram:DeletePolicy",
            "ram:DeletePolicyVersion",
            "ram:ListPoliciesForGroup",
            "ram:ListPolicies",
            "ram:ListPolicyAttachments"
          ],
          "Resource": "*"
        }
      ]
    }
  • Persiapkan lingkungan Terraform. Anda dapat menggunakan salah satu metode berikut untuk menjalankan Terraform.

    • Gunakan Terraform di Terraform Explorer: Alibaba Cloud menyediakan lingkungan online untuk menjalankan Terraform. Anda tidak perlu menginstal Terraform. Anda dapat login untuk menggunakan dan mencoba Terraform secara online. Metode ini cocok untuk skenario ketika Anda ingin mencoba dan men-debug Terraform dengan cepat dan nyaman tanpa biaya.

    • Cloud Shell: Alibaba Cloud Cloud Shell telah memiliki komponen Terraform yang pra-instal dan kredensial identitas yang dikonfigurasi. Anda dapat langsung menjalankan perintah Terraform di Cloud Shell. Metode ini cocok untuk skenario ketika Anda ingin mengakses dan menggunakan Terraform dengan cepat dan nyaman dengan biaya rendah.

    • Instal dan konfigurasi Terraform di mesin lokal Anda: Metode ini cocok untuk skenario dengan konektivitas jaringan yang buruk atau ketika Anda memerlukan lingkungan pengembangan kustom.

Sumber daya yang digunakan

Langkah 1: Buat kebijakan akses

  1. Buat direktori kerja dan file konfigurasi bernama main.tf di dalam direktori tersebut. Kode berikut membuat kebijakan kustom. Salin kode tersebut ke dalam main.tf. Untuk informasi selengkapnya tentang kebijakan akses, lihat Policy Language.

    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    
    # Access policy
    resource "alicloud_ram_policy" "policy" {
      policy_name     = "policy-name-${random_integer.default.result}"
      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
    }
  2. Jalankan perintah berikut untuk menginisialisasi lingkungan Terraform.

    terraform init

    Jika informasi berikut dikembalikan, inisialisasi berhasil.

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. Jalankan perintah berikut untuk mengeksekusi kode.

    terraform apply

    Saat diminta, masukkan yes dan tekan tombol Enter. Tunggu hingga perintah selesai. Jika informasi berikut dikembalikan, kode berhasil dieksekusi.

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    
    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
  4. Verifikasi hasilnya.

    Jalankan perintah terraform show

    Di direktori kerja, jalankan perintah berikut untuk mengkueri detail sumber daya yang dibuat oleh Terraform:

    terraform show

    image

    Lihat di Konsol

    Masuk ke Konsol Resource Access Management (RAM), lalu navigasikan ke halaman Permission Management > Policies untuk melihat kebijakan akses yang telah dibuat.

    image

Langkah 2: Buat dan otorisasi peran RAM

  1. Tambahkan kode berikut ke file main.tf.

    # RAM role
    resource "alicloud_ram_role" "role" {
      name        = "role-name-${random_integer.default.result}"
      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
    }
    
    # Grant permissions to the RAM role
    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
    }
  2. Buat rencana eksekusi dan pratinjau perubahan.

    terraform plan
  3. Jalankan perintah berikut untuk mengeksekusi kode.

    terraform apply

    Saat diminta, masukkan yes dan tekan tombol Enter. Tunggu hingga perintah selesai. Jika informasi berikut dikembalikan, kode berhasil dieksekusi.

    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
  4. Verifikasi hasilnya.

    Jalankan perintah terraform show

    Di direktori kerja, jalankan perintah berikut untuk mengkueri detail sumber daya yang dibuat oleh Terraform:

    terraform show

    image

    Lihat di Konsol

    1. Login ke Konsol Resource Access Management (RAM). Buka halaman Identity Management > Roles untuk melihat peran RAM yang telah dibuat.

      image

    2. Klik Role Name untuk melihat izin dari peran RAM tersebut.

      image

Bersihkan sumber daya

Jika Anda tidak lagi memerlukan sumber daya yang dibuat menggunakan Terraform, jalankan perintah berikut untuk melepaskannya. Untuk informasi selengkapnya tentang terraform destroy, lihat Perintah umum.

terraform destroy

Contoh lengkap

Catatan

Kode contoh dalam tutorial ini mendukung eksekusi satu klik dan dapat dijalankan langsung. Jalankan dengan satu klik

Kode contoh

resource "random_integer" "default" {
  min = 10000
  max = 99999
}

# Access policy
resource "alicloud_ram_policy" "policy" {
  policy_name     = "policy-name-${random_integer.default.result}"
  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
}

# RAM role
resource "alicloud_ram_role" "role" {
  name        = "role-name-${random_integer.default.result}"
  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
}

# Grant permissions to the RAM role
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
}

Untuk contoh lengkap lainnya, lihat folder spesifik produk di Contoh lengkap lainnya.