AWS Solutions Architect · Pelajaran

Kawalan Akses S3: Dasar Baldi dan ACL

Tulis dasar baldi, bandingkan dasar tersebut dengan ACL dan konfigurasikan tetapan penyekatan akses awam untuk pengehosan yang selamat.

Pelajaran 2 daripada 413 langkah

Kawalan Akses S3: Dasar Baldi dan ACL ialah pelajaran AWS Solutions Architect percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AWS Solutions Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.

Gambaran Keseluruhan Kawalan Capaian S3

S3 menawarkan beberapa mekanisme kawalan capaian yang bertindih: dasar IAM (berasaskan identiti, mengawal tindakan yang boleh dilakukan oleh prinsipal), dasar baldi (dasar JSON berasaskan sumber pada baldi), Access Control Lists (ACLs) (pemberian setiap objek/baldi yang legasi), dan S3 Block Public Access (penggantian peringkat akaun atau baldi yang menyekat sebarang capaian awam tanpa mengira dasar lain). Bagi kebanyakan kes penggunaan pada masa ini, dasar baldi bersama Block Public Access ialah pendekatan yang disyorkan—ACL dianggap legasi.

Dasar Baldi: JSON Berasaskan Sumber

Dasar baldi ialah dokumen JSON yang dilampirkan terus pada baldi S3. Dokumen ini menentukan prinsipal mana (pengguna IAM, peranan, akaun AWS, perkhidmatan atau orang awam) yang boleh melaksanakan tindakan tertentu pada sumber tertentu (baldi dan/atau awalan kunci tertentu). Dasar baldi menyokong akses merentas akaun tanpa memerlukan peranan IAM: Anda boleh memberikan akses baca kepada peranan IAM akaun AWS lain untuk objek tertentu secara terus melalui dasar baldi. Setiap baldi boleh mempunyai satu dasar, dan saiz maksimumnya ialah 20 KB.

# Allow a specific IAM role from another account to read objects
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'AWS': 'arn:aws:iam::999999999999:role/PartnerReadRole'
    },
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-bucket/partner-data/*'
  }]
}

Menjadikan Objek Boleh Dibaca oleh Orang Awam

Untuk menyampaikan kandungan awam (contohnya aset tapak web statik dan set data awam), Anda boleh menjadikan objek boleh dibaca oleh orang awam melalui dasar baldi. Mula-mula, lumpuhkan Block Public Access pada peringkat baldi, kemudian tambahkan pernyataan dasar baldi dengan Principal: '*' dan Action: s3:GetObject. Gabungan melumpuhkan tetapan Block Public Access dan Allow dalam dasar baldi diperlukan—mengaktifkan salah satu sahaja tidak akan berfungsi. Sentiasa hadkan Resource kepada awalan tertentu dan bukannya seluruh baldi, melainkan Anda memang mahu semua objek tersedia untuk orang awam.

# Public read policy for static website assets
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': '*',
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-website-bucket/public/*'
  }]
}

Tetapan S3 Block Public Access

S3 Block Public Access ialah perlindungan keselamatan dengan empat tetapan yang mengatasi dasar baldi dan ACL: BlockPublicAcls (menolak permintaan untuk menetapkan ACL awam), IgnorePublicAcls (mengabaikan ACL awam sedia ada), BlockPublicPolicy (menolak dasar baldi yang memberikan akses awam), dan RestrictPublicBuckets (mengehadkan akses berdasarkan dasar awam). Keempat-empat tetapan diaktifkan secara lalai. Anda juga boleh mengaktifkan Block Public Access pada peringkat akaun, lalu menyekatnya untuk semua baldi tanpa mengira tetapan baldi individu—sesuai untuk mencegah pendedahan awam secara tidak sengaja.

# Enable all Block Public Access settings on a bucket
aws s3api put-public-access-block \
  --bucket my-private-bucket \
  --public-access-block-configuration \
    BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true

Senarai Kawalan Akses (ACLs): Legasi

S3 ACLs ialah mekanisme kawalan akses asal yang wujud sebelum IAM. ACL memberikan keizinan yang telah ditetapkan (READ, WRITE, FULL_CONTROL) kepada akaun AWS atau kumpulan yang telah ditetapkan (semua pengguna, pengguna AWS yang disahkan dan penghantaran log). ACL boleh digunakan pada peringkat baldi atau peringkat objek individu. AWS kini mengesyorkan melumpuhkan ACL (tetapan S3 'Bucket Owner Enforced' menjadikan pemilik baldi sebagai pemilik semua objek dan melumpuhkan ACL) serta menggunakan dasar baldi dan IAM. ACL masih diuji dalam peperiksaan SAA-C03 sebagai konsep legasi.

# Disable ACLs by setting ownership to BucketOwnerEnforced
aws s3api put-bucket-ownership-controls \
  --bucket my-bucket \
  --ownership-controls '{"Rules":[{"ObjectOwnership":"BucketOwnerEnforced"}]}'

Kawalan Akses Asal untuk CloudFront

Apabila menyampaikan kandungan S3 melalui CloudFront, Anda mahu baldi kekal peribadi tetapi CloudFront masih boleh mengambil objek. Gunakan Origin Access Control (OAC)—pengganti moden untuk Origin Access Identity (OAI). OAC mencipta identiti CloudFront yang Anda berikan keizinan s3:GetObject dalam dasar baldi, sambil memastikan Block Public Access kekal diaktifkan. Dengan cara ini, pengguna mesti melalui CloudFront (untuk penc cache, WAF dan HTTPS), dan tidak boleh mengakses baldi secara terus—suatu corak seni bina selamat yang lazim dalam peperiksaan SAA-C03.

# Bucket policy granting CloudFront OAC access
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'Service': 'cloudfront.amazonaws.com'
    },
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-bucket/*',
    'Condition': {
      'StringEquals': {
        'AWS:SourceArn': 'arn:aws:cloudfront::123456789012:distribution/EDFDVBD6EXAMPLE'
      }
    }
  }]
}

Akses S3 Merentas Akaun

Terdapat dua cara untuk memberikan akaun AWS lain akses kepada baldi S3 Anda. Pilihan 1 — Dasar baldi: tambahkan pernyataan dengan ARN akaun luaran sebagai Principal serta tindakan S3 yang dikehendaki. Pengguna/peranan IAM akaun luaran masih memerlukan keizinan IAM untuk memanggil S3, dan dasar baldi juga mesti memberikan Allow kepada mereka. Pilihan 2 — Peranan IAM dengan dasar kepercayaan: cipta peranan dalam akaun Anda yang mempercayai akaun luaran; identiti akaun luaran mengambil peranan tersebut dan memperoleh keizinan baldi Anda. Dasar baldi lebih mudah untuk senario baca sahaja; peranan lebih sesuai untuk akses operasi.

Konfigurasi CORS untuk Aplikasi Web

Cross-Origin Resource Sharing (CORS) membolehkan aplikasi web yang dihoskan pada satu domain membuat permintaan pengambilan JavaScript ke baldi S3 pada domain yang berbeza. Tanpa konfigurasi CORS, pelayar menyekat permintaan ini atas sebab keselamatan. Anda menambahkan konfigurasi CORS pada baldi yang menentukan asal yang dibenarkan, kaedah HTTP dan pengepala. CORS lazimnya diperlukan apabila SPA React yang dihoskan pada example.com mengambil imej atau fail secara terus daripada URL baldi S3.

# Apply a CORS configuration
aws s3api put-bucket-cors \
  --bucket my-website-bucket \
  --cors-configuration '{"CORSRules":[{"AllowedOrigins":["https://example.com"],"AllowedMethods":["GET"],"AllowedHeaders":["*"],"MaxAgeSeconds":3600}]}'

URL Pratandatangan untuk Akses Sementara

URL pratandatangan memberikan akses terhad masa kepada objek S3 peribadi (untuk GET atau PUT) tanpa mengubah sebarang keizinan baldi atau objek. URL tersebut mengandungi kelayakan Anda dan masa luput—sesiapa sahaja yang mempunyai URL itu boleh mengakses objek sehingga URL tersebut luput. Gunakan URL pratandatangan untuk: membolehkan pengguna yang disahkan dalam aplikasi Anda memuat turun fail peribadi, membenarkan klien memuat naik terus ke S3 tanpa melalui bahagian belakang Anda, atau berkongsi laporan buat sementara waktu. Tempoh luput boleh berlangsung dari 1 saat hingga 7 hari (apabila menggunakan kelayakan sementara STS, maksimum ialah 12 jam).

# Generate a pre-signed GET URL valid for 24 hours
aws s3 presign s3://my-private-bucket/reports/invoice.pdf \
  --expires-in 86400

# Generate a pre-signed PUT URL (for client uploads)
aws s3 presign s3://my-private-bucket/uploads/new-file.pdf \
  --expires-in 3600 \
  --method PUT

Syarat Dasar Baldi untuk Keselamatan

Gunakan syarat dasar baldi untuk menambahkan keselamatan berasaskan konteks. Corak lazim: aws:SourceIp mengehadkan akses kepada julat IP tertentu (contohnya titik akhir VPC atau rangkaian korporat); aws:SecureTransport: true memaksa penggunaan HTTPS dengan menolak permintaan melalui HTTP (amalan terbaik untuk semua baldi yang menyimpan data sensitif); s3:x-amz-server-side-encryption memastikan objek mesti dimuat naik dengan penyulitan sebelah pelayan; dan aws:PrincipalOrgID mengehadkan akses kepada prinsipal dalam Organisasi AWS Anda, sekali gus mencegah penyaringan data ke akaun luaran.

# Deny non-HTTPS access to the bucket
{
  'Effect': 'Deny',
  'Principal': '*',
  'Action': 's3:*',
  'Resource': [
    'arn:aws:s3:::my-secure-bucket',
    'arn:aws:s3:::my-secure-bucket/*'
  ],
  'Condition': {
    'Bool': {'aws:SecureTransport': 'false'}
  }
}

Titik Akhir S3 VPC untuk Akses Peribadi

Secara lalai, tika EC2 dalam subnet peribadi mengakses S3 melalui Internet (melalui get laluan NAT), yang menimbulkan kos NAT dan mendedahkan trafik kepada Internet awam. Titik Akhir Get Laluan S3 menyediakan sambungan peribadi ke S3 dari dalam VPC tanpa get laluan NAT, tanpa caj tambahan. Anda menambahkan Titik Akhir Get Laluan pada jadual laluan; trafik ke S3 akan dihalakan secara automatik melalui rangkaian peribadi AWS. Anda juga boleh menambahkan syarat dasar baldi menggunakan aws:SourceVpce untuk mengehadkan akses hanya kepada permintaan yang datang melalui titik akhir tersebut.

# Create an S3 gateway endpoint and associate with route tables
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-12345678 \
  --service-name com.amazonaws.us-east-1.s3 \
  --route-table-ids rtb-12345678

Semakan Pantas

Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) daripada pelajaran ini.

Imbas Kembali Pelajaran

Dalam pelajaran ini, Anda telah mempelajari bahawa: dasar baldi ialah dokumen JSON berasaskan sumber yang mengawal akses merentas akaun dan akses perkhidmatan ke S3, S3 Block Public Access ialah penggantian keselamatan yang mencegah pendedahan awam secara tidak sengaja, dan URL pratandatangan, titik akhir VPC serta konfigurasi CORS menangani corak akses tertentu dengan selamat. Seterusnya, kita akan membincangkan pemversian S3, MFA Delete dan replikasi.

Percuma untuk bermula

Pelajari AWS Solutions Architect dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Kawalan Akses S3: Dasar Baldi dan ACL” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran AWS Solutions Architect, termasuk “Kawalan Akses S3: Dasar Baldi dan ACL”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Kawalan Akses S3: Dasar Baldi dan ACL”?

Tulis dasar baldi, bandingkan dasar tersebut dengan ACL dan konfigurasikan tetapan penyekatan akses awam untuk pengehosan yang selamat. Anda berlatih AWS Solutions Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan AWS Solutions Architect?

Tiada pengalaman terdahulu diperlukan. Pembelajaran AWS Solutions Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Kawalan Akses S3: Dasar Baldi dan ACL” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran AWS Solutions Architect ini?

Ya. Setiap pelajaran AWS Solutions Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Baldi, Objek dan Wilayah
  2. Kawalan Akses S3: Dasar Baldi dan ACL
  3. Pemversian, Pemadaman MFA dan Replikasi
  4. Kelas Storan dan Dasar Kitar Hayat
← Kembali ke AWS Solutions Architect