Memecahkan masalah kesalahan akses ditolak di Amazon SQS - Amazon Simple Queue Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah kesalahan akses ditolak di Amazon SQS

Topik berikut mencakup penyebab AccessDenied atau AccessDeniedException kesalahan paling umum pada panggilan API Amazon SQS. Untuk informasi selengkapnya tentang cara memecahkan masalah kesalahan ini, lihat Bagaimana cara memecahkan masalah kesalahan "" atau "AccessDenied" pada panggilan AccessDeniedException API Amazon SQS? dalam Panduan Pusat AWS Pengetahuan.

Contoh pesan kesalahan:

An error occurred (AccessDenied) when calling the SendMessage operation: Access to
        the resource https://sqs.us-east-1.amazonaws.com/ is denied.

- atau -

An error occurred (KMS.AccessDeniedException) when calling the SendMessage
        operation: User: arn:aws:iam::xxxxx:user/xxxx is not authorized to perform:
        kms:GenerateDataKey on resource: arn:aws:kms:us-east-1:xxxx:key/xxxx with an explicit
        deny.

Kebijakan antrian Amazon SQS dan kebijakan IAM

Untuk memverifikasi apakah pemohon memiliki izin yang tepat untuk melakukan operasi Amazon SQS, lakukan hal berikut:

  • Identifikasi prinsip IAM yang membuat panggilan Amazon SQS API. Jika prinsipal IAM berasal dari akun yang sama, kebijakan antrian Amazon SQS atau AWS kebijakan Identity and Access Management (IAM) and Access Management (IAM) harus menyertakan izin untuk secara eksplisit mengizinkan akses untuk tindakan tersebut.

  • Jika prinsipal adalah entitas IAM:

    • Anda dapat mengidentifikasi pengguna atau peran IAM Anda dengan memeriksa sudut kanan atas AWS Management Console, atau dengan menggunakan perintah. aws sts get-caller-identity

  • Jika prinsipal adalah AWS layanan, maka kebijakan antrian Amazon SQS harus secara eksplisit mengizinkan akses.

  • Jika prinsipal adalah prinsipal lintas akun, maka kebijakan antrian Amazon SQS dan kebijakan IAM harus secara eksplisit mengizinkan akses.

  • Jika kebijakan menggunakan elemen kondisi, periksa apakah kondisi membatasi akses.

penting

Penolakan eksplisit di salah satu kebijakan mengesampingkan izin eksplisit. Berikut adalah beberapa contoh dasar kebijakan Amazon SQS.

AWS Key Management Service izin

Jika antrian Amazon SQS Anda mengaktifkan enkripsi sisi server (SSE) dengan pelanggan yang dikelola AWS KMS key, maka izin harus diberikan kepada produsen dan konsumen. Untuk mengonfirmasi apakah antrian dienkripsi, Anda dapat menggunakan KmsMasterKeyId atribut GetQueueAttributesAPI, atau dari konsol antrian di bawah Enkripsi.

  • Izin yang diperlukan untuk produsen:

    { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "<Key ARN>" }
  • Izin yang diperlukan untuk konsumen:

    { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "<Key ARN>" }
  • Izin yang diperlukan untuk akses lintas akun:

    { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:Decrypt", "kms:ReEncrypt", "kms:GenerateDataKey" ], "Resource": "<Key ARN>" }

Pilih salah satu opsi berikut untuk mengaktifkan enkripsi antrian Amazon SQS:

Namun, jika Anda menggunakan kunci KMS AWS -managed, Anda tidak dapat mengubah kebijakan kunci default. Oleh karena itu, untuk menyediakan akses ke layanan lain dan lintas akun, gunakan kunci yang dikelola pelanggan. Melakukan hal ini memungkinkan Anda untuk mengedit kebijakan utama.

Kebijakan titik akhir VPC

Jika Anda mengakses Amazon SQS melalui titik akhir Amazon Virtual Private Cloud (Amazon VPC), kebijakan titik akhir Amazon SQS VPC harus mengizinkan akses. Anda dapat membuat kebijakan untuk titik akhir VPC Amazon untuk Amazon SQS, di mana Anda dapat menentukan hal berikut:

  1. Prinsipal yang dapat melakukan tindakan.

  2. Tindakan yang dapat dilakukan.

  3. Sumber daya yang menjadi target tindakan.

Dalam contoh berikut, kebijakan titik akhir VPC menentukan bahwa pengguna IAM diizinkan mengirim pesan ke MyUser antrean Amazon SQS. MyQueue Tindakan lain, pengguna IAM, dan sumber daya Amazon SQS ditolak aksesnya melalui titik akhir VPC.

{ "Statement": [{ "Action": ["sqs:SendMessage"], "Effect": "Allow", "Resource": "arn:aws:sqs:us-east-2:123456789012:MyQueue", "Principal": { "AWS": "arn:aws:iam:123456789012:user/MyUser" } }] }

Kebijakan kontrol layanan organisasi

Jika Anda Akun AWS termasuk dalam organisasi, AWS Organizations kebijakan dapat memblokir Anda dari mengakses antrian Amazon SQS Anda. Secara default, AWS Organizations kebijakan tidak memblokir permintaan apa pun ke Amazon SQS. Namun, pastikan AWS Organizations kebijakan Anda belum dikonfigurasi untuk memblokir akses ke antrian Amazon SQS. Untuk petunjuk tentang cara memeriksa AWS Organizations kebijakan Anda, lihat Mencantumkan semua kebijakan di Panduan AWS Organizations Pengguna.