AWS SDK for Java 1.x telah memasuki mode pemeliharaan pada 31 Juli 2024, dan akan mencapai end-of-support
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kebijakan Kontrol Akses
AWS Kebijakan kontrol akses memungkinkan Anda menentukan kontrol akses berbutir halus pada sumber daya Anda. AWS Kebijakan kontrol akses terdiri dari kumpulan pernyataan, yang berbentuk:
Akun A memiliki izin untuk melakukan tindakan B pada sumber daya C di mana kondisi D berlaku.
Di mana:
-
A adalah prinsipal - Akun AWS Yang membuat permintaan untuk mengakses atau memodifikasi salah satu AWS sumber daya Anda.
-
B adalah tindakan - Cara di mana AWS sumber daya Anda sedang diakses atau dimodifikasi, seperti mengirim pesan ke Amazon SQS antrian, atau menyimpan objek dalam Amazon S3 ember.
-
C adalah sumber daya - AWS Entitas yang prinsipal ingin mengakses, seperti Amazon SQS antrian, atau objek yang disimpan di Amazon S3.
-
D adalah sekumpulan kondisi - Kendala opsional yang menentukan kapan harus mengizinkan atau menolak akses bagi prinsipal untuk mengakses sumber daya Anda. Banyak kondisi ekspresif tersedia, beberapa khusus untuk setiap layanan. Misalnya, Anda dapat menggunakan ketentuan tanggal untuk mengizinkan akses ke sumber daya Anda hanya setelah atau sebelum waktu tertentu.
Amazon S3 Contoh
Contoh berikut menunjukkan kebijakan yang memungkinkan siapa pun mengakses untuk membaca semua objek dalam bucket, tetapi membatasi akses untuk mengunggah objek ke bucket tersebut ke dua Akun AWS s tertentu (selain akun pemilik bucket).
Statement allowPublicReadStatement = new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new S3ObjectResource(myBucketName, "*")); Statement allowRestrictedWriteStatement = new Statement(Effect.Allow) .withPrincipals(new Principal("123456789"), new Principal("876543210")) .withActions(S3Actions.PutObject) .withResources(new S3ObjectResource(myBucketName, "*")); Policy policy = new Policy() .withStatements(allowPublicReadStatement, allowRestrictedWriteStatement); AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); s3.setBucketPolicy(myBucketName, policy.toJson());
Amazon SQS Contoh
Salah satu penggunaan kebijakan yang umum adalah untuk mengotorisasi Amazon SQS antrian untuk menerima pesan dari topik Amazon SNS.
Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SQSActions.SendMessage) .withConditions(ConditionFactory.newSourceArnCondition(myTopicArn))); Map queueAttributes = new HashMap(); queueAttributes.put(QueueAttributeName.Policy.toString(), policy.toJson()); AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); sqs.setQueueAttributes(new SetQueueAttributesRequest(myQueueUrl, queueAttributes));
Contoh Amazon SNS
Beberapa layanan menawarkan ketentuan tambahan yang dapat digunakan dalam kebijakan. Amazon SNS menyediakan ketentuan untuk mengizinkan atau menolak langganan ke topik SNS berdasarkan protokol (misalnya, email, HTTP, HTTPS, Amazon SQS) dan titik akhir (misalnya, alamat email, URL, Amazon SQS ARN) dari permintaan untuk berlangganan topik.
Condition endpointCondition = SNSConditionFactory.newEndpointCondition("*@mycompany.com"); Policy policy = new Policy().withStatements( new Statement(Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(SNSActions.Subscribe) .withConditions(endpointCondition)); AmazonSNS sns = AmazonSNSClientBuilder.defaultClient(); sns.setTopicAttributes( new SetTopicAttributesRequest(myTopicArn, "Policy", policy.toJson()));