All Products
Search
Document Center

Migration Hub:Buat kebijakan kustom berdasarkan ReadOnlyAccess policy dari AWS

Last Updated:Jun 30, 2025

Topik ini menjelaskan cara membuat kebijakan kustom berdasarkan ReadOnlyAccess policy yang memberikan izin baca-saja pada sumber daya Amazon Web Services (AWS).

Informasi latar belakang

AWS menyediakan ReadOnlyAccess policy yang mengizinkan akses baca-saja ke layanan penyimpanan seperti Amazon Simple Storage Service (Amazon S3). Untuk mengisolasi data bisnis dan mencegah kebocoran data, Anda memerlukan kebijakan yang memberikan izin pada lebih sedikit sumber daya.

Solusi

Anda dapat membuat kebijakan kustom berdasarkan ReadOnlyAccess policy dari AWS dengan menolak izin baca pada layanan basis data atau penyimpanan tertentu.

Kode contoh di lampiran memberikan contoh kebijakan kustom yang menolak izin baca pada layanan berikut:

s3: Amazon S3
dynamodb: Amazon DynamoDB
rds: Amazon Relational Database Service
qldb: Amazon Quantum Ledger Database
cassandra: Amazon Keyspaces (for Apache Cassandra)
codecommit

Prosedur

Buat tumpukan

1. Masuk ke konsol AWS CloudFormation sebagai administrator atau pengguna tingkat lanjut dan pilih wilayah. Pastikan pengguna atau peran memiliki izin operasi pada AWS Identity and Access Management (IAM).

2. Di halaman Stacks, klik Create stack.step2

3. Di halaman Create stack, pilih Template is ready di bagian Prerequisite - Prepare template. Di bagian Specify template, pilih Upload a template file, klik Choose file, lalu unggah file seperti file read-only-priciple.cf.yml.step3

4. Klik Next di pojok kanan bawah. Di halaman Specify stack details, masukkan nama deskriptif di bidang Stack name. Dalam contoh ini, nama tumpukan adalah AliCloudInspector.

step4

5. Gunakan pengaturan default untuk langkah-langkah lainnya. Di halaman terakhir, pilih I acknowledge that AWS CloudFormation might create IAM resources di bagian Capabilities dan klik Create stack.

step5

6. Tunggu hingga tumpukan selesai dibuat.

step6

Dapatkan informasi tumpukan

Di konsol AWS CloudFormation, klik tumpukan AliCloudInspector yang Anda buat di panel Stacks. Di halaman detail, klik tab Outputs. Anda dapat melihat nama pengguna, kata sandi, AccessKey, dan SecretKey dari tumpukan.

step7

Verifikasi informasi tumpukan

Anda dapat melakukan tes sederhana setelah mendapatkan informasi tumpukan dengan menggunakan metode berikut:

Pergi ke konsol
  1. Keluar dari akun pengguna saat ini.

  2. Masuk kembali ke konsol AWS CloudFormation menggunakan nama pengguna dan kata sandi yang Anda peroleh. Setelah masuk ke konsol, kotak dialog Reset Password akan muncul.

Pergi ke CLI

Ganti nilai parameter AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY dalam template variabel lingkungan berikut dengan AccessKey dan SecretKey yang Anda peroleh. Impor kode tersebut ke CLI.

export AWS_ACCESS_KEY_ID=<AK>
export AWS_SECRET_ACCESS_KEY=<SK>
export AWS_DEFAULT_REGION=<Region>

Jalankan perintah berikut untuk melakukan tes:

aws s3 ls # Periksa apakah nama semua bucket terdaftar.
aws s3 cp <object> # Periksa apakah akses ke objek ditolak.

Lampiran

read-only-user.cf.yaml

---
AWSTemplateFormatVersion: '2010-09-09'
Description: A cloudformation template to create a true read-only user and corresponding AKSK to let AliCloud team be able to access resources but no data.

Resources:
  ReadOnlyUser:
    Type: AWS::IAM::User
    Properties:
      ManagedPolicyArns:
      - arn:aws:iam::aws:policy/ReadOnlyAccess
      LoginProfile:
        Password: !Ref AWS::StackId
        PasswordResetRequired: true

  DenyUnnecessaryPolicies:
    Type: AWS::IAM::Policy
    Properties:
      PolicyName: DenyUnnecessaryPermissionsOfReadOnlyAccess
      PolicyDocument:
        Statement:
        - Effect: Deny
          Action:
          - s3:GetObject*
          - dynamodb:BatchGet*
          - dynamodb:Get*
          - dynamodb:Query
          - dynamodb:Scan
          - rds:Download*
          - glacier:Get*
          - qldb:Get*
          - cassandra:Select
          - codecommit:BatchGet*
          - codecommit:Get*
          - codecommit:GitPull
          Resource: "*"
      Users:
      - !Ref ReadOnlyUser
  CFNKeys:
    Type: AWS::IAM::AccessKey
    Properties:
      UserName: !Ref ReadOnlyUser
Outputs:
  Password:
    Value: !Ref AWS::StackId
  UserName:
    Value: !Ref ReadOnlyUser
    Description: Username of new user
  AccessKey:
    Value:
      Ref: CFNKeys
    Description: AWSAccessKeyId of new user
  SecretKey:
    Value:
      Fn::GetAtt:
      - CFNKeys
      - SecretAccessKey
    Description: AWSSecretKey of new user