

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

# AWS Elemen kebijakan JSON: NotPrincipal
<a name="reference_policies_elements_notprincipal"></a>

`NotPrincipal`Elemen menggunakan `"Effect":"Deny"` untuk menolak akses ke semua prinsipal ***kecuali*** prinsipal yang ditentukan dalam elemen. `NotPrincipal` Prinsipal dapat berupa pengguna IAM, prinsipal pengguna AWS STS federasi, peran IAM, sesi peran yang diasumsikan,, AWS layanan Akun AWS, atau jenis utama lainnya. Untuk informasi lebih lanjut tentang kepala sekolah, lihat. [AWS Elemen kebijakan JSON: Principal](reference_policies_elements_principal.md)

`NotPrincipal`harus digunakan dengan`"Effect":"Deny"`. Menggunakannya `"Effect":"Allow"` dengan tidak didukung. 

**penting**  
Kami tidak merekomendasikan penggunaan `NotPrincipal` untuk kebijakan berbasis sumber daya baru sebagai bagian dari strategi keamanan dan otorisasi Anda. Saat Anda menggunakan`NotPrincipal`, pemecahan masalah efek dari beberapa jenis kebijakan bisa jadi sulit. Sebaiknya gunakan kunci `aws:PrincipalArn` konteks dengan operator kondisi ARN sebagai gantinya.

## Poin kunci
<a name="notprincipal-key-points"></a>
+ `NotPrincipal`Elemen ini didukung dalam kebijakan berbasis sumber daya untuk beberapa layanan AWS , termasuk titik akhir VPC. Kebijakan berbasis sumber daya adalah kebijakan yang diterapkan langsung ke sumber daya. Anda tidak dapat menggunakan `NotPrincipal` elemen dalam kebijakan berbasis identitas IAM atau dalam kebijakan kepercayaan peran IAM.
+ Jangan gunakan pernyataan kebijakan berbasis sumber daya yang menyertakan elemen `NotPrincipal` kebijakan dengan `Deny` efek untuk pengguna IAM atau peran yang memiliki kebijakan batas izin yang dilampirkan. `NotPrincipal`Elemen dengan `Deny` efek akan selalu menolak prinsip IAM yang memiliki kebijakan batas izin yang dilampirkan, terlepas dari nilai yang ditentukan dalam elemen. `NotPrincipal` Hal ini menyebabkan beberapa pengguna IAM atau peran yang seharusnya memiliki akses ke sumber daya kehilangan akses. Sebaiknya ubah pernyataan kebijakan berbasis sumber daya Anda untuk menggunakan operator kondisi [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN)dengan kunci [`aws:PrincipalArn`](reference_policies_condition-keys.md#condition-keys-principalarn)konteks untuk membatasi akses, bukan elemen. `NotPrincipal` Untuk informasi tentang batas izin, lihat[Batas izin untuk entitas IAM](access_policies_boundaries.md).
+ Saat Anda menggunakan`NotPrincipal`, Anda juga harus menentukan ARN akun dari prinsipal yang tidak ditolak. Jika tidak, kebijakan ini dapat menolak akses ke seluruh akun yang berisi prinsipal. Bergantung pada layanan yang Anda sertakan dalam kebijakan Anda, AWS dapat memvalidasi akun terlebih dahulu, lalu pengguna. Jika pengguna peran yang diasumsikan (seseorang yang menggunakan peran) sedang dievaluasi, AWS mungkin memvalidasi akun terlebih dahulu, kemudian peran, dan kemudian pengguna peran yang dianggap. Pengguna peran yang diasumsikan diidentifikasi oleh nama sesi peran yang ditentukan saat mereka mengasumsikan peran. Oleh karena itu, kami sangat menyarankan Anda secara eksplisit untuk menyertakan ARN untuk akun pengguna, atau menyertakan ARN untuk peran dan ARN untuk akun yang berisi peran tersebut.
+ `NotPrincipal`Elemen tidak didukung dalam Kebijakan Kontrol Layanan (SCP) dan Kebijakan Kontrol Sumber Daya (RCP).

## Alternatif untuk `NotPrincipal` elemen
<a name="notprincipal-alternatives"></a>

Saat mengelola kontrol akses di AWS, mungkin ada skenario di mana Anda perlu secara eksplisit menolak semua akses prinsipal ke sumber daya, kecuali untuk satu atau beberapa prinsip yang Anda tentukan. AWS merekomendasikan penggunaan pernyataan Deny dengan kunci konteks kondisi global untuk kontrol yang lebih tepat dan pemecahan masalah yang lebih mudah. Contoh berikut menunjukkan pendekatan alternatif menggunakan operator kondisi seperti `StringNotEquals` atau `ArnNotEquals` untuk menolak akses ke semua prinsipal kecuali yang ditentukan dalam elemen Kondisi.

## Contoh skenario menggunakan peran IAM
<a name="notprincipal-alternative-role"></a>

Anda dapat menggunakan kebijakan berbasis sumber daya dengan pernyataan Deny untuk mencegah semua peran IAM, kecuali yang ditentukan dalam elemen Kondisi, mengakses atau memanipulasi sumber daya Anda. Pendekatan ini mengikuti prinsip AWS keamanan bahwa penolakan eksplisit selalu diutamakan daripada pernyataan izin apa pun dan membantu mempertahankan prinsip hak istimewa terkecil di seluruh infrastruktur Anda. AWS 

Alih-alih menggunakan`NotPrincipal`, sebaiknya gunakan pernyataan Deny dengan kunci konteks kondisi global dan operator kondisi [`ArnNotEquals`](reference_policies_elements_condition_operators.md#Conditions_ARN)ingin secara eksplisit mengizinkan akses peran IAM ke sumber daya Anda. Contoh berikut digunakan [aws:PrincipalArn](reference_policies_condition-keys.md#condition-keys-principalarn) untuk secara eksplisit mengizinkan peran `read-only-role` mengakses bucket Amazon S3 di folder. `Bucket_Account_Audit`

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyCrossAuditAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::Bucket_Account_Audit",
        "arn:aws:s3:::Bucket_Account_Audit/*"
      ],
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::444455556666:role/read-only-role"
        }
      }
    }
  ]
}
```

------

## Contoh skenario menggunakan prinsip layanan
<a name="notprincipal-alternative-service-principal"></a>

Anda dapat menggunakan pernyataan Deny untuk mencegah semua prinsip layanan, kecuali yang ditentukan dalam `Condition` elemen, mengakses atau memanipulasi sumber daya Anda. Pendekatan ini sangat berguna ketika Anda perlu menerapkan kontrol akses berbutir halus atau menetapkan batas keamanan antara berbagai layanan dan aplikasi di lingkungan Anda. AWS 

Alih-alih menggunakan`NotPrincipal`, sebaiknya gunakan pernyataan Deny dengan kunci konteks kondisi global dan operator kondisi [`StringNotEquals`](reference_policies_elements_condition_operators.md#Conditions_String)untuk secara eksplisit mengizinkan akses utama layanan ke sumber daya Anda. Contoh berikut digunakan `aws:PrincipalServiceName` untuk secara eksplisit mengizinkan prinsipal AWS CodeBuild layanan mengakses bucket Amazon S3 di folder. `BUCKETNAME`

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyNotCodeBuildAccess",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::BUCKETNAME",
        "arn:aws:s3:::BUCKETNAME/*"
      ],
      "Condition": {
        "StringNotEqualsIfExists": {
          "aws:PrincipalServiceName": "codebuild.amazonaws.com"
        }
      }
    }
  ]
}
```

------