

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

# AWS DevOps Agen Keamanan
<a name="aws-devops-agent-security"></a>

Dokumen ini memberikan informasi tentang pertimbangan keamanan, perlindungan data, kontrol akses, dan kemampuan kepatuhan untuk AWS DevOps Agen. Gunakan informasi ini untuk memahami bagaimana AWS DevOps Agen dirancang untuk memenuhi persyaratan keamanan dan kepatuhan Anda.

## Keamanan berlapis-lapis
<a name="multi-layered-security"></a>

AWS DevOps Agen mengimplementasikan keamanan di beberapa lapisan. Bahkan jika izin yang lebih luas diberikan untuk peran IAM agen, agen memberlakukan kontrol akses internalnya sendiri untuk membatasi ruang lingkup tindakannya. Misalnya, jika pelanggan menambahkan kebijakan IAM akses Amazon S3 lengkap ke peran IAM agen, AWS DevOps Agen akan memastikan bahwa hanya log setelah `AWSLogs` awalan dibaca untuk tujuan pemecahan masalah.

Sebaiknya ikuti prinsip hak istimewa paling sedikit saat mengonfigurasi izin IAM untuk AWS DevOps Agen, dan menerapkan keamanan di beberapa lapisan. Pertahanan secara mendalam memastikan bahwa tidak ada kesalahan konfigurasi tunggal yang dapat membahayakan keamanan lingkungan Anda.

## Agen Spaces
<a name="agent-spaces"></a>

Agen Spaces berfungsi sebagai batas keamanan utama di AWS DevOps Agen. Setiap Ruang Agen:
+ Beroperasi secara independen dengan konfigurasi dan izinnya sendiri
+ Menentukan AWS akun dan sumber daya mana yang dapat diakses agen
+ Menetapkan koneksi ke platform pihak ketiga

Agen Spaces menjaga isolasi ketat untuk memastikan keamanan dan mencegah akses yang tidak diinginkan di berbagai lingkungan atau tim.

## Pemrosesan regional dan aliran data
<a name="regional-processing-and-data-flow"></a>

AWS DevOps Agen beroperasi secara global dengan kemampuan pemrosesan regional. Agen mengambil data operasional dari AWS wilayah di semua AWS akun yang diberikan akses dalam Ruang Agen yang dikonfigurasi. Pengumpulan data lintas akun multi-wilayah ini memastikan analisis insiden yang komprehensif sambil menghormati batas geografis untuk pemrosesan inferensi.

### Penggunaan Amazon Bedrock dan inferensi lintas wilayah
<a name="amazon-bedrock-usage-and-cross-region-inference"></a>

AWS DevOps Agen akan secara otomatis memilih wilayah optimal dalam geografi Anda untuk memproses permintaan inferensi Anda. Ini memaksimalkan sumber daya komputasi yang tersedia, ketersediaan model, dan memberikan pengalaman pelanggan terbaik. Data Anda akan tetap disimpan hanya di wilayah tempat Ruang Agen Anda dibuat, namun, permintaan input dan hasil keluaran dapat diproses di luar wilayah tersebut seperti yang dijelaskan dalam daftar berikut. Semua data akan dikirimkan dienkripsi di seluruh jaringan aman Amazon.

AWS DevOps Agen akan dengan aman merutekan permintaan inferensi Anda ke sumber daya komputasi yang tersedia dalam wilayah geografis tempat permintaan tersebut berasal, sebagai berikut:
+ Permintaan inferensi yang berasal dari Uni Eropa akan diproses di dalam Uni Eropa.
+ Permintaan inferensi yang berasal dari Amerika Serikat akan diproses di Amerika Serikat.
+ Permintaan inferensi yang berasal dari Australia akan diproses di Australia.
+ Permintaan inferensi yang berasal dari Jepang akan diproses di Jepang.
+ Jika permintaan inferensi berasal dari area yang tidak terdaftar, permintaan tersebut akan diproses secara default di Amerika Serikat.
+ DevOps Agen dan Bedrock tidak terpengaruh oleh kebijakan pelanggan dalam Kebijakan Kontrol Layanan (SCPs) atau Control Tower yang membatasi konten pelanggan ke wilayah tertentu
+ Bedrock dapat menggunakan wilayah selain wilayah asal dalam geografi Anda untuk melakukan inferensi stateless guna mengoptimalkan kinerja dan ketersediaan

## Manajemen identitas dan akses
<a name="identity-and-access-management"></a>

### Metode autentikasi
<a name="authentication-methods"></a>

AWS DevOps Agen menyediakan dua metode otentikasi untuk masuk ke aplikasi web AWS DevOps Agent Space:
+ **AWS Integrasi Pusat Identitas** — Metode otentikasi utama menggunakan OAuth 2.0 dengan otentikasi berbasis sesi menggunakan cookie khusus HTTP. AWS Identity Center dapat berfederasi dengan penyedia identitas eksternal melalui protokol OIDC dan SAMP standar, termasuk penyedia seperti Okta, Ping Identity, dan Microsoft Entra ID. Metode ini mendukung otentikasi multi-faktor melalui penyedia identitas Anda. AWS Identity Center default untuk durasi sesi hingga 12 jam dan dapat dikonfigurasi ke durasi yang diinginkan.
+ **Tautan autentikasi IAM** — Metode alternatif menyediakan akses langsung ke aplikasi web dari Konsol AWS Manajemen menggunakan token berbasis JWT yang berasal dari sesi Konsol Manajemen yang ada. AWS Opsi ini berguna untuk mengevaluasi AWS DevOps Agen sebelum menerapkan integrasi Pusat Identitas penuh serta mendapatkan akses administratif jika aplikasi web AWS DevOps Agen menjadi tidak dapat diakses melalui otentikasi berbasis Identity Center. Sesi dibatasi hingga 10 menit.

### Peran IAM
<a name="iam-roles"></a>

AWS DevOps Agen menggunakan peran IAM untuk menentukan izin akses:
+ **Peran akun utama** — Memberikan agen akses ke sumber daya di AWS akun tempat Anda membuat Ruang Agen serta akses ke peran akun sekunder.
+ **Peran akun sekunder** — Memberikan agen akses ke sumber daya di AWS akun tambahan yang terhubung ke Ruang Agen.
+ **Peran aplikasi web** — Memberi pengguna akses ke data investigasi AWS DevOps Agen dan temuan di aplikasi web.

Peran ini harus dikonfigurasi mengikuti prinsip hak istimewa paling sedikit, hanya memberikan izin baca saja yang diperlukan untuk penyelidikan.

## Perlindungan data
<a name="data-protection"></a>

### Enkripsi data
<a name="data-encryption"></a>

AWS DevOps Agen mengenkripsi semua data pelanggan:
+ **Enkripsi saat istirahat** - Semua data dienkripsi dengan kunci AWS-managed.
+ **Enkripsi dalam perjalanan** — Semua log yang diambil, metrik, item pengetahuan, metadata tiket, dan data lainnya dienkripsi dalam perjalanan di dalam jaringan pribadi agen dan ke jaringan luar.

### Penyimpanan dan retensi data
<a name="data-storage-and-retention"></a>

Data disimpan di wilayah tempat Ruang Agen Anda dibuat, sementara pemrosesan inferensi dapat terjadi dalam geografi Anda seperti yang dijelaskan di bagian penggunaan Amazon Bedrock di atas.

### Informasi identitas pribadi (PII)
<a name="personal-identifiable-information-pii"></a>

AWS DevOps Agen tidak memfilter informasi PII saat merangkum data yang dikumpulkan selama investigasi, evaluasi rekomendasi, atau tanggapan obrolan. Disarankan agar data PII disunting sebelum disimpan di log observabilitas.

## Jurnal agen dan pencatatan audit
<a name="agent-journal-and-audit-logging"></a>

### Jurnal agen
<a name="agent-journal"></a>

Baik kemampuan Investigasi Insiden dan Pencegahan memelihara jurnal terperinci yang:
+ Catat setiap langkah penalaran dan tindakan yang diambil
+ Ciptakan transparansi lengkap ke dalam proses pengambilan keputusan agen
+ Tidak dapat dimodifikasi oleh agen setelah direkam, meminimalkan serangan seperti injeksi cepat dari menyembunyikan tindakan penting
+ Sertakan semua pesan obrolan dari halaman Investigasi

### AWS CloudTrail integrasi
<a name="aws-cloudtrail-integration"></a>

Semua panggilan AWS DevOps Agent API secara otomatis ditangkap oleh AWS CloudTrail dalam AWS akun hosting. Dengan menggunakan informasi yang dikumpulkan oleh CloudTrail, Anda dapat menentukan:
+ Permintaan yang dibuat untuk agen
+ Alamat IP dari mana permintaan itu dibuat
+ Siapa yang membuat permintaan
+ Ketika itu dibuat

## Perlindungan injeksi yang cepat
<a name="prompt-injection-protection"></a>

Serangan injeksi cepat terjadi ketika penyerang menyematkan instruksi berbahaya ke dalam data eksternal, seperti halaman web atau dokumen, yang nantinya akan diproses oleh sistem AI generatif. AWS DevOps Agen secara native mengkonsumsi banyak sumber data sebagai bagian dari operasi normalnya, termasuk log, tag sumber daya, dan data operasional lainnya. AWS DevOps Agen melindungi terhadap serangan injeksi cepat melalui pengamanan di bawah ini, tetapi penting untuk memastikan semua sumber data yang terhubung dan akses pengguna ke sumber data tersebut dipercaya. Lihat bagian [Model tanggung jawab bersama](#aws-devops-agent-security) untuk informasi selengkapnya.

Pengamanan injeksi yang cepat:
+ **Kemampuan menulis terbatas** — Alat yang tersedia untuk agen tidak dapat mengubah sumber daya, kecuali membuka tiket dan kasus dukungan. Ini mencegah instruksi berbahaya memodifikasi infrastruktur atau aplikasi Anda.
+ **Penegakan batas akun** — AWS DevOps Agen hanya beroperasi dalam batas yang diizinkan oleh peran yang diberikan kepada agen di akun sekunder primer dan terhubung. AWS Agen tidak dapat mengakses atau memodifikasi sumber daya di luar cakupan yang dikonfigurasi.
+ **Perlindungan keamanan AI — AWS DevOps Agen menggunakan model dengan perlindungan** AI Safety Level 3 (ASL-3). Perlindungan ini termasuk pengklasifikasi yang mendeteksi dan mencegah serangan injeksi cepat sebelum mereka dapat mempengaruhi perilaku agen.
+ **Jejak audit abadi** — Jurnal agen mencatat setiap langkah penalaran dan tindakan yang diambil. Entri jurnal tidak dapat dimodifikasi oleh agen setelah direkam, mencegah serangan injeksi cepat menyembunyikan tindakan jahat.

Sementara AWS DevOps Agen menyediakan beberapa lapisan perlindungan terhadap serangan injeksi yang cepat, konfigurasi tertentu dapat meningkatkan risiko:
+ **Alat server MCP khusus** - Fitur bring-your-own MCP memungkinkan Anda memperkenalkan alat khusus ke agen, yang dapat menghadirkan peluang tambahan untuk injeksi cepat. Alat khusus mungkin tidak memiliki kontrol keamanan yang sama dengan alat AWS DevOps Agen asli, dan instruksi berbahaya berpotensi memanfaatkan alat ini dengan cara yang tidak diinginkan. Lihat bagian [Model tanggung jawab bersama](#aws-devops-agent-security) untuk informasi selengkapnya.
+ **Serangan pengguna resmi** — Pengguna yang berwenang untuk beroperasi dalam batas AWS akun atau alat yang terhubung memiliki peluang lebih tinggi untuk mencoba serangan terhadap agen. Pengguna ini mungkin memiliki kemampuan untuk memodifikasi sumber data yang dikonsumsi agen, seperti log atau tag sumber daya, sehingga lebih mudah untuk menyematkan instruksi berbahaya yang akan diproses agen.

Untuk mengurangi risiko ini:

1. Tinjau dan uji server MCP khusus dengan cermat sebelum menerapkannya di Ruang Agen.

   1. Pastikan mereka hanya diizinkan untuk melakukan tindakan hanya-baca

   1. Verifikasi bahwa pengguna alat eksternal yang diakses oleh server MCP adalah entitas tepercaya, karena AWS DevOps Agen yang berinteraksi dengan MCP bergantung pada hubungan kepercayaan implisit yang dibuat antara pengguna alat ini dan Agen AWS DevOps 

1. Menerapkan prinsip hak istimewa paling sedikit saat memberikan pengguna akses ke sistem yang menyediakan data kepada agen

1. Secara teratur mengaudit server MCP mana yang terhubung ke Ruang Agen Anda

1. Karena konten apa pun yang diambil dari daftar yang diizinkan URLs dapat mencoba memanipulasi perilaku agen, hanya sertakan sumber tepercaya dalam daftar izin Anda.

## Keamanan integrasi
<a name="integration-security"></a>

AWS DevOps Agen mendukung beberapa jenis integrasi, masing-masing dengan model keamanannya sendiri:
+ **Integrasi dua arah asli — Integrasi** bawaan yang dapat mengirim data ke agen dan menerima pembaruan dari agen. Ini menggunakan metode otentikasi vendor
+ Server **MCP — Server** Protokol Konteks Model Jarak Jauh yang memanfaatkan alur otentikasi OAuth 2.0 dan kunci API untuk berkomunikasi secara aman dengan sistem eksternal.
+ **Pemicu Webhook** — Investigasi memicu dari layanan jarak jauh seperti tiket atau sistem observabilitas. Webhook menggunakan Hash Based Message Authentication Code (HMAC) untuk keamanan.
+ **Komunikasi keluar** — Integrasi seperti Slack dan sistem tiket menerima pembaruan dari agen tetapi belum mendukung komunikasi dua arah.

### Penyedia pendaftaran
<a name="registration-providers"></a>

Beberapa alat eksternal diautentikasi di tingkat akun dan dibagikan di antara semua Ruang Agen di akun. Saat Anda mendaftarkan alat ini, Anda mengautentikasi satu kali di tingkat akun, dan kemudian setiap Ruang Agen dapat terhubung ke sumber daya tertentu dalam koneksi terdaftar tersebut.

Alat-alat berikut menggunakan pendaftaran tingkat akun:
+ **GitHub**— Menggunakan OAuth aliran untuk otentikasi. Setelah mendaftar GitHub di tingkat akun, setiap Ruang Agen dapat terhubung ke repositori tertentu dalam organisasi Anda GitHub .
+ **Dynatrace** — Menggunakan OAuth otentikasi token. Setelah mendaftarkan Dynatrace di level akun, setiap Ruang Agen dapat terhubung ke lingkungan Dynatrace tertentu atau konfigurasi pemantauan.
+ **Slack** — Menggunakan otentikasi OAuth token. Setelah mendaftarkan Slack di tingkat akun, setiap Ruang Agen dapat terhubung ke saluran Slack tertentu.
+ **Datadog** - Menggunakan MCP dengan OAuth aliran untuk otentikasi. Setelah mendaftarkan Datadog di tingkat akun, setiap Ruang Agen dapat terhubung ke sumber daya pemantauan Datadog tertentu.
+ **New Relic** — Menggunakan otentikasi kunci API. Setelah mendaftarkan New Relic di level akun, setiap Ruang Agen dapat terhubung ke konfigurasi pemantauan New Relic tertentu.
+ **Splunk** — Menggunakan otentikasi token pembawa. Setelah mendaftarkan Splunk di tingkat akun, setiap Ruang Agen dapat terhubung ke sumber data Splunk tertentu.
+ **GitLab**— Menggunakan otentikasi token akses. Setelah mendaftar GitLab di tingkat akun, setiap Ruang Agen dapat terhubung ke GitLab repositori tertentu.
+ **ServiceNow**— Menggunakan key/token otentikasi OAuth klien. Setelah mendaftar ServiceNow di level akun, setiap Ruang Agen dapat terhubung ke ServiceNow instance atau antrian tiket tertentu.
+ **Server MCP jarak jauh yang dapat diakses publik umum** — Gunakan OAuth alur untuk otentikasi. Setelah mendaftarkan server MCP jarak jauh di tingkat akun, setiap Ruang Agen dapat terhubung ke sumber daya tertentu yang diekspos oleh server tersebut.

## Konektivitas jaringan
<a name="network-connectivity"></a>

AWS DevOps Agen terhubung ke sistem pihak ketiga Anda dan server MCP jarak jauh untuk melakukan penyelidikan dan operasi lainnya.

### Lalu lintas masuk dari AWS DevOps Agen ke sistem Anda
<a name="inbound-traffic-from-aws-devops-agent-to-your-systems"></a>

AWS DevOps Agen memulai koneksi keluar ke sistem pihak ketiga Anda dan server MCP jarak jauh, yang tiba sebagai lalu lintas masuk ke infrastruktur Anda. Cara Anda mengamankan lalu lintas ini tergantung pada bagaimana alat Anda di-host:
+ **Alat yang dihosting secara pribadi** - Jika alat Anda dapat dijangkau dari dalam AWS VPC, Anda dapat menggunakan *koneksi pribadi AWS DevOps * Agen untuk menjaga lalu lintas terisolasi ke AWS jaringan, dan di luar internet publik. Untuk informasi selengkapnya, lihat [Menghubungkan ke alat yang dihosting secara pribadi](configuring-capabilities-for-aws-devops-agent-connecting-to-privately-hosted-tools.md).
+ **Alat yang dihosting secara publik** - Jika alat Anda dapat dijangkau melalui internet publik dan menggunakan aturan IP yang diizinkan atau firewall, Anda harus mengizinkan lalu lintas masuk dari alamat IP sumber Agen berikut: AWS DevOps 
  + Asia Pacific (Sydney) (ap-southeast-2)
    + `13.237.95.197`
    + `13.238.84.102`
  + Asia Pacific (Tokyo) (ap-northeast-1)
    + `13.192.12.233`
    + `35.74.181.230`
    + `57.183.50.158`
  + Eropa (Frankfurt) (eu-central-1)
    + `18.158.110.140`
    + `52.57.96.160`
    + `52.59.55.56`
  + Eropa (Irlandia) (eu-west-1)
    + `34.251.85.24`
    + `52.30.157.157`
    + `52.51.192.222`
  + US East (N. Virginia) (us-east-1)
    + `34.228.181.128`
    + `44.219.176.187`
    + `54.226.244.221`
  + US West (Oregon) (us-west-2)
    + `34.212.16.133`
    + `52.89.67.212`
    + `54.187.135.61`

### Lalu lintas keluar dari VPC Anda ke Agen AWS DevOps
<a name="outbound-traffic-from-your-vpc-to-aws-devops-agent"></a>

Untuk lalu lintas keluar dari AWS VPC Anda AWS DevOps ke Agen (misalnya, [Memanggil DevOps Agen melalui Webhook](configuring-capabilities-for-aws-devops-agent-invoking-devops-agent-through-webhook.md) menggunakan), Anda dapat menggunakan Titik Akhir VPC untuk menjaga lalu lintas jaringan ini terisolasi ke jaringan. AWS Untuk informasi selengkapnya, lihat [VPC Endpoint (AWS PrivateLink)](aws-devops-agent-security-vpc-endpoints-aws-privatelink.md).

## Model tanggung jawab bersama
<a name="shared-responsibility-model"></a>

### AWS tanggung jawab
<a name="aws-responsibilities"></a>

AWS bertanggung jawab untuk:
+ Menjaga keamanan data yang diambil oleh agen
+ Mengamankan alat asli yang tersedia untuk digunakan oleh agen
+ Melindungi infrastruktur yang menjalankan AWS DevOps Agen

### Tanggung jawab pelanggan
<a name="customer-responsibilities"></a>

Pelanggan bertanggung jawab untuk:
+ Mengelola akses pengguna ke ruang agen
+ Membatasi akses ke pengguna tepercaya sistem eksternal yang memberikan masukan kepada agen, seperti layanan dan sumber daya yang menghasilkan log, CloudTrail peristiwa, tiket, dan banyak lagi - yang dapat digunakan untuk mencoba injeksi cepat berbahaya.
+ Pastikan semua sumber data yang terhubung memiliki data tepercaya yang tidak mungkin digunakan untuk mencoba serangan injeksi yang cepat
+ Memastikan integrasi server bring-your-own MCP beroperasi dengan aman
+ Memastikan peran IAM yang ditugaskan ke agen dicakup dengan benar
+ Menyunting data PII sebelum disimpan di log observabilitas dan sumber data agen lainnya
+ Mengikuti praktik yang disarankan untuk hanya memberikan izin baca-saja ke sumber data yang terhubung, termasuk server MCP bring-your-own

## Penggunaan data
<a name="data-usage"></a>

AWS tidak menggunakan data agen, pesan obrolan, atau data dari sumber data terintegrasi untuk melatih model atau meningkatkan produk. Ruang AWS DevOps Agen menggunakan umpan balik dalam produk pelanggan untuk meningkatkan tanggapan dan investigasi agen, tetapi AWS tidak menggunakannya untuk meningkatkan layanan itu sendiri.

## Kepatuhan
<a name="compliance"></a>

Pada pratinjau, AWS DevOps Agen tidak sesuai dengan standar termasuk SOC 2, PCI-DSS, ISO 27001, atau FedRAMP. AWS akan mengumumkan sertifikasi kepatuhan mana yang akan tersedia di lain waktu.

# DevOps Izin Agen IAM
<a name="aws-devops-agent-security-devops-agent-iam-permissions"></a>

AWS DevOps Agen menggunakan tindakan AWS Identity and Access Management (IAM) khusus layanan untuk mengontrol akses ke fitur dan kemampuannya. Tindakan ini menentukan apa yang dapat dilakukan pengguna dalam konsol AWS DevOps Agen dan Aplikasi Web Operator. Ini terpisah dari izin API AWS layanan yang digunakan agen itu sendiri untuk menyelidiki sumber daya Anda.

Untuk informasi selengkapnya tentang membatasi akses agen, lihat [Membatasi Akses Agen di AWS Akun.](https://docs.aws.amazon.com/devopsagent/latest/userguide/aws-devops-agent-security-limiting-agent-access-in-an-aws-account.html)

## Tindakan manajemen Ruang Agen
<a name="agent-space-management-actions"></a>

Tindakan ini mengontrol akses ke konfigurasi dan manajemen Ruang Agen:
+ **aidevops: GetAgentSpace** — Memungkinkan pengguna untuk melihat detail tentang Ruang Agen, termasuk konfigurasi, status, dan akun terkaitnya. Pengguna memerlukan izin ini untuk mengakses Ruang Agen di Konsol AWS Manajemen.
+ **aidevops: GetAssociation** — Memungkinkan pengguna untuk melihat detail tentang asosiasi akun tertentu, termasuk konfigurasi peran IAM dan status koneksi.
+ **aidevops: ListAssociations** — Memungkinkan pengguna untuk mencantumkan semua asosiasi AWS akun yang dikonfigurasi untuk Ruang Agen, termasuk akun primer dan sekunder.

## Investigasi dan tindakan eksekusi
<a name="investigation-and-execution-actions"></a>

Tindakan ini mengontrol akses ke fitur investigasi insiden:
+ **aidevops: ListExecutions** — Memungkinkan pengguna untuk melihat metadata eksekusi—termasuk ID, status, dan lainnya—untuk investigasi, mitigasi, evaluasi, dan percakapan obrolan yang terkait dengan tugas.
+ **aidevops: ListJournalRecords** — Memungkinkan pengguna untuk mengakses log terperinci yang menunjukkan langkah-langkah penalaran agen, tindakan yang diambil, dan sumber data yang dikonsultasikan selama penyelidikan, mitigasi, evaluasi, dan percakapan obrolan. Ini berguna untuk memahami bagaimana agen mencapai kesimpulannya.

## Tindakan manajemen obrolan
<a name="chat-management-actions"></a>

Obrolan memerlukan izin IAM berikut agar berfungsi:
+ **aidevops: ListChats** — Memungkinkan pengguna untuk membuat daftar dan mengakses riwayat percakapan obrolan.
+ **aidevops: CreateChat** — Memungkinkan pengguna untuk membuat percakapan obrolan baru.
+ **aidevops: SendMessage** — Memungkinkan pengguna untuk mengirimkan pertanyaan dan menerima tanggapan streaming.

## Topologi dan tindakan penemuan
<a name="topology-and-discovery-actions"></a>

Tindakan ini mengontrol akses ke fitur pemetaan sumber daya aplikasi:
+ **aidevops: DiscoverTopology** — Memungkinkan pengguna untuk memicu penemuan topologi dan pemetaan untuk Ruang Agen. Tindakan ini memulai proses pemindaian AWS akun dan membangun topologi sumber daya aplikasi.

## Tindakan pencegahan dan rekomendasi
<a name="prevention-and-recommendation-actions"></a>

Tindakan ini mengontrol akses ke fitur Pencegahan:
+ **aidevops: ListGoals** - Memungkinkan pengguna untuk melihat tujuan dan sasaran pencegahan yang sedang dikerjakan agen berdasarkan pola insiden baru-baru ini.
+ **aidevops: ListRecommendations** — Memungkinkan pengguna untuk melihat semua rekomendasi yang dihasilkan oleh fitur Pencegahan, termasuk prioritas dan kategori mereka.
+ **aidevops: GetRecommendation** — Memungkinkan pengguna untuk melihat informasi terperinci tentang rekomendasi tertentu, termasuk insiden yang akan dicegah dan panduan implementasi.

## Tindakan manajemen tugas backlog
<a name="backlog-task-management-actions"></a>

Tindakan ini mengontrol kemampuan untuk mengelola rekomendasi sebagai tugas backlog:
+ **aidevops: CreateBacklogTask** - Memungkinkan pengguna untuk membuat investigasi insiden atau tugas evaluasi pencegahan.
+ **aidevops: UpdateBacklogTask** — Memungkinkan pengguna untuk menyetujui rencana mitigasi atau membatalkan penyelidikan atau evaluasi aktif.
+ **aidevops: GetBacklogTask** — Memungkinkan pengguna untuk mengambil detail tentang tugas tertentu.
+ **aidevops: ListBacklogTasks** — Memungkinkan pengguna membuat daftar tugas untuk Ruang Agen, difilter berdasarkan jenis tugas, status, prioritas, atau waktu pembuatan.

## Tindakan manajemen pengetahuan
<a name="knowledge-management-actions"></a>

Tindakan ini mengontrol kemampuan untuk menambah dan mengelola pengetahuan khusus yang dapat digunakan agen selama investigasi:
+ **aidevops: CreateKnowledgeItem** — Memungkinkan pengguna untuk menambahkan item pengetahuan khusus, seperti keterampilan, panduan pemecahan masalah, atau informasi khusus aplikasi yang harus dirujuk agen.
+ **aidevops: ListKnowledgeItems** — Memungkinkan pengguna untuk melihat semua item pengetahuan yang dikonfigurasi untuk Ruang Agen.
+ **aidevops: GetKnowledgeItem** — Memungkinkan pengguna untuk mengambil detail item pengetahuan tertentu.
+ **aidevops: UpdateKnowledgeItem** — Memungkinkan pengguna untuk memodifikasi item pengetahuan yang ada untuk menjaga informasi tetap terkini.
+ **aidevops: DeleteKnowledgeItem** — Memungkinkan pengguna untuk menghapus item pengetahuan yang tidak lagi relevan.

## AWS Support tindakan integrasi
<a name="aws-support-integration-actions"></a>

Tindakan ini mengontrol integrasi dengan kasus AWS Support:
+ **aidevops: InitiateChatForCase** — Memungkinkan pengguna untuk memulai sesi obrolan dengan AWS Support langsung dari penyelidikan, secara otomatis memberikan konteks tentang insiden tersebut.
+ **aidevops: EndChatForCase** — Memungkinkan pengguna untuk mengakhiri sesi obrolan kasus AWS Support yang aktif.
+ **aidevops: DescribeSupportLevel** — Memungkinkan pengguna untuk memeriksa level paket AWS Support untuk akun untuk menentukan opsi dukungan yang tersedia.

## Tindakan penggunaan dan pemantauan
<a name="usage-and-monitoring-actions"></a>

Tindakan ini mengontrol akses ke informasi penggunaan:
+ **aidevops: GetAccountUsage** — Memungkinkan pengguna untuk melihat kuota bulanan AWS DevOps Agen untuk jam investigasi, jam evaluasi pencegahan, dan permintaan obrolan, serta penggunaan bulan berjalan.

## Contoh kebijakan IAM umum
<a name="common-iam-policy-examples"></a>

### Kebijakan administrator
<a name="administrator-policy"></a>

Kebijakan ini memberikan akses penuh ke semua fitur AWS DevOps Agen:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "aidevops:*",
      "Resource": "*"
    }
  ]
}
```

### Kebijakan operator
<a name="operator-policy"></a>

Kebijakan ini memberikan akses ke fitur investigasi dan pencegahan tanpa kemampuan administratif:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAgentSpace",
        "aidevops:InvokeAgent",
        "aidevops:ListExecutions",
        "aidevops:ListJournalRecords",
        "aidevops:ListAssociations",
        "aidevops:GetAssociation",
        "aidevops:DiscoverTopology",
        "aidevops:ListRecommendations",
        "aidevops:GetRecommendation",
        "aidevops:CreateBacklogTask",
        "aidevops:UpdateBacklogTask",
        "aidevops:GetBacklogTask",
        "aidevops:ListBacklogTasks",
        "aidevops:ListKnowledgeItems",
        "aidevops:GetKnowledgeItem",
        "aidevops:InitiateChatForCase",
        "aidevops:EndChatForCase",
        "aidevops:ListChats",
        "aidevops:CreateChat",
        "aidevops:SendMessage",
        "aidevops:ListGoals",
        "aidevops:CreateKnowledgeItem",
        "aidevops:UpdateKnowledgeItem",
        "aidevops:DescribeSupportLevel",
        "aidevops:ListPendingMessages"
      ],
      "Resource": "*"
    }
  ]
}
```

### Kebijakan hanya-baca
<a name="read-only-policy"></a>

Kebijakan ini memberikan akses hanya lihat ke investigasi dan rekomendasi:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aidevops:GetAgentSpace",
        "aidevops:ListAssociations",
        "aidevops:GetAssociation",
        "aidevops:ListExecutions",
        "aidevops:ListJournalRecords",
        "aidevops:ListRecommendations",
        "aidevops:GetRecommendation",
        "aidevops:ListBacklogTasks",
        "aidevops:GetBacklogTask",
        "aidevops:ListKnowledgeItems",
        "aidevops:GetKnowledgeItem",
        "aidevops:GetAccountUsage"
      ],
      "Resource": "*"
    }
  ]
}
```

## Menggunakan peran terkait layanan untuk Agen AWS DevOps
<a name="using-service-linked-roles-for-aws-devops-agent"></a>

AWS DevOps [Agen menggunakan peran AWS terkait layanan Identity and Access Management (IAM).](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html) Peran terkait layanan adalah jenis peran IAM unik yang ditautkan langsung ke Agen. AWS DevOps Peran terkait layanan telah ditentukan sebelumnya oleh AWS DevOps Agen dan mencakup semua izin yang diperlukan layanan untuk memanggil AWS layanan lain atas nama Anda.

### Izin peran terkait layanan
<a name="service-linked-role-permissions"></a>

Peran terkait layanan `AWSServiceRoleForAIDevOps` mempercayai layanan utama `aidevops.amazonaws.com` untuk memegang peran tersebut.

Peran menggunakan kebijakan terkelola `AWSServiceRoleForAIDevOpsPolicy` dengan izin berikut:
+ `cloudwatch:PutMetricData`— Publikasikan metrik penggunaan ke `AWS/AIDevOps` CloudWatch namespace. Dicakup oleh `cloudwatch:namespace` kondisi untuk hanya mengizinkan namespace. `AWS/AIDevOps`
+ `vpc-lattice:CreateResourceGateway`— Buat gateway sumber daya VPC Lattice untuk koneksi pribadi. Dicakup oleh `aws:RequestTag/AWSAIDevOpsManaged` kondisi sehingga layanan hanya dapat membuat gateway sumber daya yang membawa tag. `AWSAIDevOpsManaged`
+ `vpc-lattice:TagResource`— Tag gateway sumber daya Kisi VPC. Tercakup oleh suatu `aws:RequestTag/AWSAIDevOpsManaged` kondisi.
+ `vpc-lattice:DeleteResourceGateway`— Hapus gateway sumber daya VPC Lattice. Dicakup oleh suatu `aws:ResourceTag/AWSAIDevOpsManaged` kondisi sehingga layanan hanya dapat menghapus gateway sumber daya yang dibuatnya.
+ `vpc-lattice:GetResourceGateway`— Ambil informasi tentang gateway sumber daya VPC Lattice. Dicakup oleh suatu `aws:ResourceTag/AWSAIDevOpsManaged` kondisi sehingga layanan hanya dapat membaca gateway sumber daya yang dibuatnya.
+ `ec2:DescribeVpcs`,`ec2:DescribeSubnets`, `ec2:DescribeSecurityGroups` — Ambil informasi tentang sumber daya jaringan VPC yang diperlukan untuk mengonfigurasi gateway sumber daya. Tindakan hanya-baca ini berlaku untuk semua sumber daya VPC karena EC2 API tidak mendukung izin tingkat sumber daya untuk panggilan Deskripsikan.
+ `iam:CreateServiceLinkedRole`— Buat peran terkait layanan VPC Lattice yang diperlukan untuk operasi gateway sumber daya. Izin ini hanya mencakup prinsip `vpc-lattice.amazonaws.com` layanan dan tidak dapat digunakan untuk membuat peran terkait layanan untuk layanan lainnya.

### Membuat peran terkait layanan
<a name="creating-the-service-linked-role"></a>

Anda tidak perlu membuat peran tertaut layanan `AWSServiceRoleForAIDevOps` secara manual. Saat Anda mulai menggunakan AWS DevOps Agen, layanan akan menciptakan peran terkait layanan untuk Anda.

Untuk memungkinkan layanan membuat peran atas nama Anda, Anda harus memiliki `iam:CreateServiceLinkedRole` izin. Kami merekomendasikan pelingkupan izin ini dengan `iam:AWSServiceName` syarat `aidevops.amazonaws.com` untuk mengikuti prinsip hak istimewa paling sedikit. Untuk informasi selengkapnya, lihat Izin [peran terkait layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions).

### Mengedit peran terkait layanan
<a name="editing-the-service-linked-role"></a>

Anda tidak dapat mengedit peran yang terhubung dengan layanan `AWSServiceRoleForAIDevOps`. Setelah peran dibuat, Anda tidak dapat mengubah nama peran karena berbagai entitas mungkin mereferensikan peran berdasarkan nama. Namun, Anda dapat mengedit penjelasan peran menggunakan IAM. Untuk informasi selengkapnya, lihat [Mengedit peran terkait layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role).

### Menghapus peran tertaut layanan
<a name="deleting-the-service-linked-role"></a>

Jika Anda tidak perlu lagi menggunakan AWS DevOps Agen, kami sarankan Anda menghapus peran `AWSServiceRoleForAIDevOps` terkait layanan. Sebelum Anda dapat menghapus peran, Anda harus terlebih dahulu menghapus koneksi pribadi yang dikonfigurasi di Ruang Agen Anda. Menghapus peran terkait layanan tidak secara otomatis menghapus gateway sumber daya VPC Lattice yang ditandai dengan yang sebelumnya dibuat oleh layanan. `AWSAIDevOpsManaged` Anda harus menghapus gateway sumber daya ini secara manual jika tidak lagi diperlukan. Untuk informasi selengkapnya, lihat [Menghapus peran terkait layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role).

## AWS Kebijakan terkelola untuk AWS DevOps Agen
<a name="aws-managed-policies-for-aws-devops-agent"></a>

AWS mengatasi banyak kasus penggunaan umum dengan menyediakan kebijakan IAM mandiri yang dibuat dan dikelola oleh. AWS Kebijakan AWS terkelola ini memberikan izin yang diperlukan untuk kasus penggunaan umum sehingga Anda dapat menghindari keharusan menyelidiki izin apa yang diperlukan. Untuk informasi selengkapnya, lihat [kebijakan AWS terkelola](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) di \$1Panduan Pengguna IAM\$1.

Kebijakan AWS terkelola berikut, yang dapat Anda lampirkan ke pengguna di akun Anda, khusus untuk AWS DevOps Agen.

### AIDevOpsAgentReadOnlyAccess
<a name="aidevopsagentreadonlyaccess"></a>

Menyediakan akses baca saja ke DevOps Agen Amazon melalui Konsol AWS Manajemen

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AIDevOpsAgentReadOnlyAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:Get*",
				"aidevops:List*",
				"aidevops:SearchServiceAccessibleResource"
			],
			"Resource": "*"
		}
	]
}
```

### AIDevOpsAgentFullAccess
<a name="aidevopsagentfullaccess"></a>

Menyediakan akses penuh ke Amazon DevOps Agent melalui AWS Management Console

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AIDevOpsAgentSpaceAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateAgentSpace",
				"aidevops:DeleteAgentSpace",
				"aidevops:GetAgentSpace",
				"aidevops:ListAgentSpaces",
				"aidevops:UpdateAgentSpace"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsServiceAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DeregisterService",
				"aidevops:GetService",
				"aidevops:ListServices",
				"aidevops:RegisterService",
				"aidevops:SearchServiceAccessibleResource"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsAssociationAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:AssociateService",
				"aidevops:DisassociateService",
				"aidevops:GetAssociation",
				"aidevops:ListAssociations",
				"aidevops:UpdateAssociation",
				"aidevops:ValidateAwsAssociations"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsWebhookAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListWebhooks"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsOperatorAppAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DisableOperatorApp",
				"aidevops:EnableOperatorApp",
				"aidevops:GetOperatorApp",
				"aidevops:UpdateOperatorAppIdpConfig"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsKnowledgeAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateKnowledgeItem",
				"aidevops:DeleteKnowledgeItem",
				"aidevops:GetKnowledgeItem",
				"aidevops:ListKnowledgeItems",
				"aidevops:ListKnowledgeItemVersions",
				"aidevops:UpdateKnowledgeItem"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsBacklogAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateBacklogTask",
				"aidevops:GetBacklogTask",
				"aidevops:ListBacklogTasks",
				"aidevops:ListGoals",
				"aidevops:UpdateBacklogTask",
				"aidevops:UpdateGoal"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsRecommendationAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetRecommendation",
				"aidevops:ListRecommendations",
				"aidevops:UpdateRecommendation"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsAgentChatAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:CreateChat",
				"aidevops:ListChats",
				"aidevops:ListPendingMessages",
				"aidevops:SendMessage"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsJournalAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListExecutions",
				"aidevops:ListJournalRecords"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsTopologyAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DiscoverTopology"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsSupportAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:DescribeSupportLevel",
				"aidevops:EndChatForCase",
				"aidevops:InitiateChatForCase"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsUsageAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAccountUsage"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsTaggingAccess",
			"Effect": "Allow",
			"Action": [
				"aidevops:ListTagsForResource",
				"aidevops:TagResource",
				"aidevops:UntagResource"
			],
			"Resource": "*"
		},
		{
			"Sid": "AIDevOpsVendedLogs",
			"Effect": "Allow",
			"Action": [
				"aidevops:AllowVendedLogDeliveryForResource"
			],
			"Resource": "*"
		}
	]
}
```

### AIDevOpsOperatorAppAccessPolicy
<a name="aidevopsoperatorappaccesspolicy"></a>

Menyediakan akses untuk menggunakan aplikasi web AWS DevOps operator untuk Ruang Agen.

```
{
	"Version": "2012-10-17",		 	 	 		 	 	 
	"Statement": [
		{
			"Sid": "AllowOperatorAgentSpaceActions",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAgentSpace",
				"aidevops:GetAssociation",
				"aidevops:ListAssociations",
				"aidevops:CreateBacklogTask",
				"aidevops:GetBacklogTask",
				"aidevops:UpdateBacklogTask",
				"aidevops:ListBacklogTasks",
				"aidevops:ListJournalRecords",
				"aidevops:DiscoverTopology",
				"aidevops:ListGoals",
				"aidevops:ListRecommendations",
				"aidevops:ListExecutions",
				"aidevops:GetRecommendation",
				"aidevops:UpdateRecommendation",
				"aidevops:CreateKnowledgeItem",
				"aidevops:ListKnowledgeItems",
				"aidevops:ListKnowledgeItemVersions",
				"aidevops:GetKnowledgeItem",
				"aidevops:UpdateKnowledgeItem",
				"aidevops:DeleteKnowledgeItem",
				"aidevops:ListPendingMessages",
				"aidevops:InitiateChatForCase",
				"aidevops:EndChatForCase",
				"aidevops:DescribeSupportLevel",
				"aidevops:ListChats",
				"aidevops:CreateChat",
				"aidevops:SendMessage"
			],
			"Resource": "arn:aws:aidevops:*:*:agentspace/${aws:PrincipalTag/AgentSpaceId}",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		},
		{
			"Sid": "AllowOperatorAccountActions",
			"Effect": "Allow",
			"Action": [
				"aidevops:GetAccountUsage"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		},
		{
			"Sid": "AllowSupportOperatorActions",
			"Effect": "Allow",
			"Action": [
				"support:DescribeCases",
				"support:InitiateChatForCase",
				"support:DescribeSupportLevel"
			],
			"Resource": "*",
			"Condition": {
				"StringEquals": {
					"aws:ResourceAccount": "${aws:PrincipalAccount}"
				}
			}
		}
	]
}
```

### AIDevOpsAgentAccessPolicy
<a name="aidevopsagentaccesspolicy"></a>

Memberikan izin yang diperlukan oleh AWS DevOps Agen untuk melakukan investigasi dan melakukan analisis pada sumber daya pelanggan AWS .

```
{
    "Version": "2012-10-17",		 	 	 		 	 	 
    "Statement": [
        {
            "Sid": "AIOPSServiceAccess",
            "Effect": "Allow",
            "Action": [
                "access-analyzer:GetAnalyzer",
                "access-analyzer:List*",
                "acm-pca:Describe*",
                "acm-pca:GetCertificate",
                "acm-pca:GetCertificateAuthorityCertificate",
                "acm-pca:GetCertificateAuthorityCsr",
                "acm-pca:List*",
                "acm:DescribeCertificate",
                "acm:GetAccountConfiguration",
                "aidevops:GetKnowledgeItem",
                "aidevops:ListKnowledgeItems",
                "airflow:List*",
                "amplify:GetApp",
                "amplify:GetBranch",
                "amplify:GetDomainAssociation",
                "amplify:List*",
                "aoss:BatchGetCollection",
                "aoss:BatchGetLifecyclePolicy",
                "aoss:BatchGetVpcEndpoint",
                "aoss:GetAccessPolicy",
                "aoss:GetSecurityConfig",
                "aoss:GetSecurityPolicy",
                "aoss:List*",
                "appconfig:GetApplication",
                "appconfig:GetConfigurationProfile",
                "appconfig:GetEnvironment",
                "appconfig:GetHostedConfigurationVersion",
                "appconfig:List*",
                "appflow:Describe*",
                "appflow:List*",
                "application-autoscaling:Describe*",
                "application-signals:BatchGetServiceLevelObjectiveBudgetReport",
                "application-signals:GetService",
                "application-signals:GetServiceLevelObjective",
                "application-signals:List*",
                "applicationinsights:Describe*",
                "applicationinsights:List*",
                "apprunner:Describe*",
                "apprunner:List*",
                "appstream:Describe*",
                "appstream:List*",
                "appsync:GetApiAssociation",
                "appsync:GetDataSource",
                "appsync:GetDomainName",
                "appsync:GetFunction",
                "appsync:GetGraphqlApi",
                "appsync:GetGraphqlApiEnvironmentVariables",
                "appsync:GetIntrospectionSchema",
                "appsync:GetResolver",
                "appsync:GetSourceApiAssociation",
                "appsync:List*",
                "aps:Describe*",
                "aps:List*",
                "arc-zonal-shift:GetManagedResource",
                "arc-zonal-shift:List*",
                "athena:GetCapacityAssignmentConfiguration",
                "athena:GetCapacityReservation",
                "athena:GetDataCatalog",
                "athena:GetNamedQuery",
                "athena:GetPreparedStatement",
                "athena:GetWorkGroup",
                "athena:List*",
                "auditmanager:GetAssessment",
                "auditmanager:List*",
                "autoscaling:Describe*",
                "backup-gateway:GetHypervisor",
                "backup-gateway:List*",
                "backup:Describe*",
                "backup:GetBackupPlan",
                "backup:GetBackupSelection",
                "backup:GetBackupVaultAccessPolicy",
                "backup:GetBackupVaultNotifications",
                "backup:GetRestoreTestingPlan",
                "backup:GetRestoreTestingSelection",
                "backup:List*",
                "batch:DescribeComputeEnvironments",
                "batch:DescribeJobQueues",
                "batch:DescribeSchedulingPolicies",
                "batch:List*",
                "bedrock:GetAgent",
                "bedrock:GetAgentActionGroup",
                "bedrock:GetAgentAlias",
                "bedrock:GetAgentKnowledgeBase",
                "bedrock:GetDataSource",
                "bedrock:GetGuardrail",
                "bedrock:GetKnowledgeBase",
                "bedrock:List*",
                "budgets:Describe*",
                "budgets:List*",
                "ce:Describe*",
                "ce:GetAnomalyMonitors",
                "ce:GetAnomalySubscriptions",
                "ce:List*",
                "chatbot:Describe*",
                "chatbot:GetMicrosoftTeamsChannelConfiguration",
                "chatbot:List*",
                "cleanrooms-ml:GetTrainingDataset",
                "cleanrooms-ml:List*",
                "cleanrooms:GetAnalysisTemplate",
                "cleanrooms:GetCollaboration",
                "cleanrooms:GetConfiguredTable",
                "cleanrooms:GetConfiguredTableAnalysisRule",
                "cleanrooms:GetConfiguredTableAssociation",
                "cleanrooms:GetMembership",
                "cleanrooms:List*",
                "cloudformation:Describe*",
                "cloudformation:GetResource",
                "cloudformation:GetStackPolicy",
                "cloudformation:GetTemplate",
                "cloudformation:List*",
                "cloudfront:Describe*",
                "cloudfront:GetCachePolicy",
                "cloudfront:GetCloudFrontOriginAccessIdentity",
                "cloudfront:GetContinuousDeploymentPolicy",
                "cloudfront:GetDistribution",
                "cloudfront:GetDistributionConfig",
                "cloudfront:GetFunction",
                "cloudfront:GetKeyGroup",
                "cloudfront:GetMonitoringSubscription",
                "cloudfront:GetOriginAccessControl",
                "cloudfront:GetOriginRequestPolicy",
                "cloudfront:GetPublicKey",
                "cloudfront:GetRealtimeLogConfig",
                "cloudfront:GetResponseHeadersPolicy",
                "cloudfront:List*",
                "cloudtrail:Describe*",
                "cloudtrail:GetChannel",
                "cloudtrail:GetEventConfiguration",
                "cloudtrail:GetEventDataStore",
                "cloudtrail:GetEventSelectors",
                "cloudtrail:GetInsightSelectors",
                "cloudtrail:GetQueryResults",
                "cloudtrail:GetResourcePolicy",
                "cloudtrail:GetTrail",
                "cloudtrail:GetTrailStatus",
                "cloudtrail:List*",
                "cloudtrail:LookupEvents",
                "cloudtrail:StartQuery",
                "cloudwatch:Describe*",
                "cloudwatch:GenerateQuery",
                "cloudwatch:GetDashboard",
                "cloudwatch:GetInsightRuleReport",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:GetMetricStream",
                "cloudwatch:GetService",
                "cloudwatch:GetServiceLevelObjective",
                "cloudwatch:List*",
                "codeartifact:Describe*",
                "codeartifact:GetDomainPermissionsPolicy",
                "codeartifact:GetRepositoryPermissionsPolicy",
                "codeartifact:List*",
                "codebuild:BatchGetFleets",
                "codebuild:List*",
                "codecommit:GetRepository",
                "codecommit:GetRepositoryTriggers",
                "codedeploy:BatchGetDeployments",
                "codedeploy:BatchGetDeploymentTargets",
                "codedeploy:GetApplication",
                "codedeploy:GetDeploymentConfig",
                "codedeploy:GetDeploymentTarget",
                "codedeploy:List*",
                "codeguru-profiler:Describe*",
                "codeguru-profiler:GetNotificationConfiguration",
                "codeguru-profiler:GetPolicy",
                "codeguru-profiler:List*",
                "codeguru-reviewer:Describe*",
                "codeguru-reviewer:List*",
                "codepipeline:GetPipeline",
                "codepipeline:GetPipelineState",
                "codepipeline:List*",
                "codestar-connections:GetConnection",
                "codestar-connections:GetRepositoryLink",
                "codestar-connections:GetSyncConfiguration",
                "codestar-connections:List*",
                "codestar-notifications:Describe*",
                "codestar-notifications:List*",
                "cognito-identity:DescribeIdentityPool",
                "cognito-identity:GetIdentityPoolRoles",
                "cognito-identity:ListIdentityPools",
                "cognito-identity:ListTagsForResource",
                "cognito-idp:AdminListGroupsForUser",
                "cognito-idp:DescribeIdentityProvider",
                "cognito-idp:DescribeResourceServer",
                "cognito-idp:DescribeRiskConfiguration",
                "cognito-idp:DescribeUserImportJob",
                "cognito-idp:DescribeUserPool",
                "cognito-idp:DescribeUserPoolDomain",
                "cognito-idp:GetGroup",
                "cognito-idp:GetLogDeliveryConfiguration",
                "cognito-idp:GetUICustomization",
                "cognito-idp:GetUserPoolMfaConfig",
                "cognito-idp:GetWebACLForResource",
                "cognito-idp:ListGroups",
                "cognito-idp:ListIdentityProviders",
                "cognito-idp:ListResourceServers",
                "cognito-idp:ListUserPoolClients",
                "cognito-idp:ListUserPools",
                "cognito-idp:ListTagsForResource",
                "comprehend:Describe*",
                "comprehend:List*",
                "config:Describe*",
                "config:GetStoredQuery",
                "config:List*",
                "connect:Describe*",
                "connect:GetTaskTemplate",
                "connect:List*",
                "databrew:Describe*",
                "databrew:List*",
                "datapipeline:Describe*",
                "datapipeline:GetPipelineDefinition",
                "datapipeline:List*",
                "datasync:Describe*",
                "datasync:List*",
                "deadline:GetFarm",
                "deadline:GetFleet",
                "deadline:GetLicenseEndpoint",
                "deadline:GetMonitor",
                "deadline:GetQueue",
                "deadline:GetQueueEnvironment",
                "deadline:GetQueueFleetAssociation",
                "deadline:GetStorageProfile",
                "deadline:List*",
                "detective:GetMembers",
                "detective:List*",
                "devicefarm:GetDevicePool",
                "devicefarm:GetInstanceProfile",
                "devicefarm:GetNetworkProfile",
                "devicefarm:GetProject",
                "devicefarm:GetTestGridProject",
                "devicefarm:GetVPCEConfiguration",
                "devicefarm:List*",
                "devops-guru:Describe*",
                "devops-guru:GetResourceCollection",
                "devops-guru:List*",
                "dms:Describe*",
                "dms:List*",
                "ds:Describe*",
                "dynamodb:Describe*",
                "dynamodb:GetResourcePolicy",
                "dynamodb:List*",
                "ec2:Describe*",
                "ec2:GetAssociatedEnclaveCertificateIamRoles",
                "ec2:GetIpamPoolAllocations",
                "ec2:GetIpamPoolCidrs",
                "ec2:GetManagedPrefixListEntries",
                "ec2:GetNetworkInsightsAccessScopeContent",
                "ec2:GetSnapshotBlockPublicAccessState",
                "ec2:GetTransitGatewayMulticastDomainAssociations",
                "ec2:GetTransitGatewayRouteTableAssociations",
                "ec2:GetTransitGatewayRouteTablePropagations",
                "ec2:GetVerifiedAccessEndpointPolicy",
                "ec2:GetVerifiedAccessGroupPolicy",
                "ec2:GetVerifiedAccessInstanceWebAcl",
                "ec2:SearchLocalGatewayRoutes",
                "ec2:SearchTransitGatewayRoutes",
                "ecr:Describe*",
                "ecr:GetLifecyclePolicy",
                "ecr:GetRegistryPolicy",
                "ecr:GetRepositoryPolicy",
                "ecr:List*",
                "ecs:Describe*",
                "ecs:List*",
                "eks:AccessKubernetesApi",
                "eks:Describe*",
                "eks:List*",
                "elasticache:Describe*",
                "elasticache:List*",
                "elasticbeanstalk:Describe*",
                "elasticbeanstalk:List*",
                "elasticfilesystem:Describe*",
                "elasticloadbalancing:GetResourcePolicy",
                "elasticloadbalancing:GetTrustStoreCaCertificatesBundle",
                "elasticloadbalancing:GetTrustStoreRevocationContent",
                "elasticloadbalancing:Describe*",
                "elasticmapreduce:Describe*",
                "elasticmapreduce:List*",
                "emr-containers:Describe*",
                "emr-containers:List*",
                "emr-serverless:GetApplication",
                "emr-serverless:List*",
                "es:Describe*",
                "es:List*",
                "events:Describe*",
                "events:List*",
                "evidently:GetExperiment",
                "evidently:GetFeature",
                "evidently:GetLaunch",
                "evidently:GetProject",
                "evidently:GetSegment",
                "evidently:List*",
                "firehose:Describe*",
                "firehose:List*",
                "fis:GetExperimentTemplate",
                "fis:GetTargetAccountConfiguration",
                "fis:List*",
                "fms:GetNotificationChannel",
                "fms:GetPolicy",
                "fms:List*",
                "forecast:Describe*",
                "forecast:List*",
                "frauddetector:BatchGetVariable",
                "frauddetector:Describe*",
                "frauddetector:GetDetectors",
                "frauddetector:GetDetectorVersion",
                "frauddetector:GetEntityTypes",
                "frauddetector:GetEventTypes",
                "frauddetector:GetExternalModels",
                "frauddetector:GetLabels",
                "frauddetector:GetListElements",
                "frauddetector:GetListsMetadata",
                "frauddetector:GetModelVersion",
                "frauddetector:GetOutcomes",
                "frauddetector:GetRules",
                "frauddetector:GetVariables",
                "frauddetector:List*",
                "fsx:Describe*",
                "gamelift:Describe*",
                "gamelift:List*",
                "globalaccelerator:Describe*",
                "globalaccelerator:List*",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:GetJob",
                "glue:GetRegistry",
                "glue:GetSchema",
                "glue:GetSchemaVersion",
                "glue:GetTable",
                "glue:GetTags",
                "glue:GetTrigger",
                "glue:List*",
                "glue:querySchemaVersionMetadata",
                "grafana:Describe*",
                "grafana:List*",
                "greengrass:Describe*",
                "greengrass:GetDeployment",
                "greengrass:List*",
                "groundstation:GetConfig",
                "groundstation:GetDataflowEndpointGroup",
                "groundstation:GetMissionProfile",
                "groundstation:List*",
                "guardduty:GetDetector",
                "guardduty:GetFilter",
                "guardduty:GetIPSet",
                "guardduty:GetMalwareProtectionPlan",
                "guardduty:GetMasterAccount",
                "guardduty:GetMembers",
                "guardduty:GetThreatIntelSet",
                "guardduty:List*",
                "health:DescribeEvents",
                "health:DescribeEventDetails",
                "healthlake:Describe*",
                "healthlake:List*",
                "iam:GetGroup",
                "iam:GetGroupPolicy",
                "iam:GetInstanceProfile",
                "iam:GetLoginProfile",
                "iam:GetOpenIDConnectProvider",
                "iam:GetPolicy",
                "iam:GetPolicyVersion",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:GetSAMLProvider",
                "iam:GetServerCertificate",
                "iam:GetServiceLinkedRoleDeletionStatus",
                "iam:GetUser",
                "iam:GetUserPolicy",
                "iam:ListAttachedRolePolicies",
                "iam:ListOpenIDConnectProviders",
                "iam:ListRolePolicies",
                "iam:ListRoles",
                "iam:ListServerCertificates",
                "iam:ListVirtualMFADevices",
                "identitystore:DescribeGroup",
                "identitystore:DescribeGroupMembership",
                "identitystore:ListGroupMemberships",
                "identitystore:ListGroups",
                "imagebuilder:GetComponent",
                "imagebuilder:GetContainerRecipe",
                "imagebuilder:GetDistributionConfiguration",
                "imagebuilder:GetImage",
                "imagebuilder:GetImagePipeline",
                "imagebuilder:GetImageRecipe",
                "imagebuilder:GetInfrastructureConfiguration",
                "imagebuilder:GetLifecyclePolicy",
                "imagebuilder:GetWorkflow",
                "imagebuilder:List*",
                "inspector2:List*",
                "inspector:Describe*",
                "inspector:List*",
                "internetmonitor:GetMonitor",
                "internetmonitor:List*",
                "iot:Describe*",
                "iot:GetPackage",
                "iot:GetPackageVersion",
                "iot:GetPolicy",
                "iot:GetThingShadow",
                "iot:GetTopicRule",
                "iot:GetTopicRuleDestination",
                "iot:GetV2LoggingOptions",
                "iot:List*",
                "iotanalytics:Describe*",
                "iotanalytics:List*",
                "iotevents:Describe*",
                "iotevents:List*",
                "iotsitewise:Describe*",
                "iotsitewise:List*",
                "iotwireless:GetDestination",
                "iotwireless:GetDeviceProfile",
                "iotwireless:GetFuotaTask",
                "iotwireless:GetMulticastGroup",
                "iotwireless:GetNetworkAnalyzerConfiguration",
                "iotwireless:GetServiceProfile",
                "iotwireless:GetWirelessDevice",
                "iotwireless:GetWirelessGateway",
                "iotwireless:GetWirelessGatewayTaskDefinition",
                "iotwireless:List*",
                "ivs:GetChannel",
                "ivs:GetEncoderConfiguration",
                "ivs:GetPlaybackRestrictionPolicy",
                "ivs:GetRecordingConfiguration",
                "ivs:GetStage",
                "ivs:List*",
                "ivschat:GetLoggingConfiguration",
                "ivschat:GetRoom",
                "ivschat:List*",
                "kafka:Describe*",
                "kafka:GetClusterPolicy",
                "kafka:List*",
                "kafkaconnect:Describe*",
                "kafkaconnect:List*",
                "kendra:Describe*",
                "kendra:List*",
                "kinesis:Describe*",
                "kinesis:GetResourcePolicy",
                "kinesis:List*",
                "kinesisanalytics:Describe*",
                "kinesisanalytics:List*",
                "kinesisvideo:Describe*",
                "kms:DescribeKey",
                "kms:ListResourceTags",
                "kms:ListKeys",
                "kms:GetKeyPolicy",
                "kms:GetKeyRotationStatus",
                "kms:ListAliases",
                "kms:ListKeyRotations",
                "lakeformation:Describe*",
                "lakeformation:GetLFTag",
                "lakeformation:GetResourceLFTags",
                "lakeformation:List*",
                "lambda:GetAlias",
                "lambda:GetCodeSigningConfig",
                "lambda:GetEventSourceMapping",
                "lambda:GetFunctionCodeSigningConfig",
                "lambda:GetFunctionConfiguration",
                "lambda:GetFunctionEventInvokeConfig",
                "lambda:GetFunctionRecursionConfig",
                "lambda:GetFunctionUrlConfig",
                "lambda:GetLayerVersion",
                "lambda:GetLayerVersionPolicy",
                "lambda:GetPolicy",
                "lambda:GetProvisionedConcurrencyConfig",
                "lambda:GetRuntimeManagementConfig",
                "lambda:List*",
                "launchwizard:GetDeployment",
                "launchwizard:List*",
                "license-manager:GetLicense",
                "license-manager:List*",
                "lightsail:GetAlarms",
                "lightsail:GetBuckets",
                "lightsail:GetCertificates",
                "lightsail:GetContainerServices",
                "lightsail:GetDisk",
                "lightsail:GetDisks",
                "lightsail:GetInstance",
                "lightsail:GetInstances",
                "lightsail:GetLoadBalancer",
                "lightsail:GetLoadBalancers",
                "lightsail:GetLoadBalancerTlsCertificates",
                "lightsail:GetStaticIp",
                "lightsail:GetStaticIps",
                "logs:Describe*",
                "logs:FilterLogEvents",
                "logs:GetDataProtectionPolicy",
                "logs:GetDelivery",
                "logs:GetDeliveryDestination",
                "logs:GetDeliveryDestinationPolicy",
                "logs:GetDeliverySource",
                "logs:GetLogAnomalyDetector",
                "logs:GetLogDelivery",
                "logs:GetLogGroupFields",
                "logs:GetQueryResults",
                "logs:List*",
                "logs:StartQuery",
                "logs:StopLiveTail",
                "logs:StopQuery",
                "logs:TestMetricFilter",
                "m2:GetApplication",
                "m2:GetEnvironment",
                "m2:List*",
                "macie2:GetAllowList",
                "macie2:GetCustomDataIdentifier",
                "macie2:GetFindingsFilter",
                "macie2:GetMacieSession",
                "macie2:List*",
                "mediaconnect:Describe*",
                "mediaconnect:List*",
                "medialive:Describe*",
                "medialive:GetCloudWatchAlarmTemplate",
                "medialive:GetCloudWatchAlarmTemplateGroup",
                "medialive:GetEventBridgeRuleTemplate",
                "medialive:GetEventBridgeRuleTemplateGroup",
                "medialive:GetSignalMap",
                "medialive:List*",
                "mediapackage-vod:Describe*",
                "mediapackage-vod:List*",
                "mediapackage:Describe*",
                "mediapackage:List*",
                "mediapackagev2:GetChannel",
                "mediapackagev2:GetChannelGroup",
                "mediapackagev2:GetChannelPolicy",
                "mediapackagev2:GetOriginEndpoint",
                "mediapackagev2:GetOriginEndpointPolicy",
                "mediapackagev2:List*",
                "memorydb:Describe*",
                "memorydb:List*",
                "mobiletargeting:GetInAppTemplate",
                "mobiletargeting:List*",
                "mq:Describe*",
                "mq:List*",
                "network-firewall:Describe*",
                "network-firewall:List*",
                "networkmanager:Describe*",
                "networkmanager:GetConnectAttachment",
                "networkmanager:GetConnectPeer",
                "networkmanager:GetCoreNetwork",
                "networkmanager:GetCoreNetworkPolicy",
                "networkmanager:GetCustomerGatewayAssociations",
                "networkmanager:GetDevices",
                "networkmanager:GetLinkAssociations",
                "networkmanager:GetLinks",
                "networkmanager:GetSites",
                "networkmanager:GetSiteToSiteVpnAttachment",
                "networkmanager:GetTransitGatewayPeering",
                "networkmanager:GetTransitGatewayRegistrations",
                "networkmanager:GetTransitGatewayRouteTableAttachment",
                "networkmanager:GetVpcAttachment",
                "networkmanager:List*",
                "oam:GetLink",
                "oam:GetSink",
                "oam:GetSinkPolicy",
                "oam:List*",
                "omics:GetAnnotationStore",
                "omics:GetReferenceStore",
                "omics:GetRunGroup",
                "omics:GetSequenceStore",
                "omics:GetVariantStore",
                "omics:GetWorkflow",
                "omics:List*",
                "organizations:Describe*",
                "organizations:List*",
                "osis:GetPipeline",
                "osis:List*",
                "payment-cryptography:GetAlias",
                "payment-cryptography:GetKey",
                "payment-cryptography:List*",
                "pca-connector-ad:GetConnector",
                "pca-connector-ad:GetDirectoryRegistration",
                "pca-connector-ad:GetServicePrincipalName",
                "pca-connector-ad:GetTemplate",
                "pca-connector-ad:GetTemplateGroupAccessControlEntry",
                "pca-connector-ad:List*",
                "pca-connector-scep:GetChallengeMetadata",
                "pca-connector-scep:GetConnector",
                "pca-connector-scep:List*",
                "personalize:Describe*",
                "personalize:List*",
                "pi:DescribeDimensionKeys",
                "pi:GetResourceMetadata",
                "pi:GetResourceMetrics",
                "pi:ListAvailableResourceDimensions",
                "pi:ListAvailableResourceMetrics",
                "pipes:Describe*",
                "pipes:List*",
                "proton:GetEnvironmentTemplate",
                "proton:GetServiceTemplate",
                "proton:List*",
                "qbusiness:GetApplication",
                "qbusiness:GetDataSource",
                "qbusiness:GetIndex",
                "qbusiness:GetPlugin",
                "qbusiness:GetRetriever",
                "qbusiness:GetWebExperience",
                "qbusiness:List*",
                "ram:GetPermission",
                "ram:GetResourceShares",
                "ram:List*",
                "rds:Describe*",
                "rds:List*",
                "redshift-serverless:GetNamespace",
                "redshift-serverless:GetWorkgroup",
                "redshift-serverless:List*",
                "redshift:Describe*",
                "refactor-spaces:GetApplication",
                "refactor-spaces:GetEnvironment",
                "refactor-spaces:GetRoute",
                "refactor-spaces:List*",
                "rekognition:Describe*",
                "rekognition:List*",
                "resiliencehub:Describe*",
                "resiliencehub:List*",
                "resource-explorer-2:GetDefaultView",
                "resource-explorer-2:GetIndex",
                "resource-explorer-2:GetView",
                "resource-explorer-2:List*",
                "resource-explorer-2:Search",
                "resource-groups:GetGroup",
                "resource-groups:GetGroupConfiguration",
                "resource-groups:GetGroupQuery",
                "resource-groups:GetTags",
                "resource-groups:List*",
                "route53-recovery-control-config:Describe*",
                "route53-recovery-control-config:List*",
                "route53-recovery-readiness:GetCell",
                "route53-recovery-readiness:GetReadinessCheck",
                "route53-recovery-readiness:GetRecoveryGroup",
                "route53-recovery-readiness:GetResourceSet",
                "route53-recovery-readiness:List*",
                "route53:GetDNSSEC",
                "route53:GetHealthCheck",
                "route53:GetHealthCheckStatus",
                "route53:GetHostedZone",
                "route53:List*",
                "route53profiles:GetProfile",
                "route53profiles:GetProfileAssociation",
                "route53profiles:GetProfileResourceAssociation",
                "route53profiles:List*",
                "route53resolver:GetFirewallDomainList",
                "route53resolver:GetFirewallRuleGroup",
                "route53resolver:GetFirewallRuleGroupAssociation",
                "route53resolver:GetOutpostResolver",
                "route53resolver:GetResolverConfig",
                "route53resolver:GetResolverQueryLogConfig",
                "route53resolver:GetResolverQueryLogConfigAssociation",
                "route53resolver:GetResolverRule",
                "route53resolver:GetResolverRuleAssociation",
                "route53resolver:List*",
                "rum:GetAppMonitor",
                "rum:List*",
                "s3-outposts:ListEndpoints",
                "s3-outposts:ListOutpostsWithS3",
                "s3:GetAccessGrant",
                "s3:GetAccessGrantsInstance",
                "s3:GetAccessGrantsLocation",
                "s3:GetAccessPoint",
                "s3:GetAccessPointConfigurationForObjectLambda",
                "s3:GetAccessPointForObjectLambda",
                "s3:GetAccessPointPolicy",
                "s3:GetAccessPointPolicyForObjectLambda",
                "s3:GetAccessPointPolicyStatusForObjectLambda",
                "s3:GetBucketAbac",
                "s3:GetBucketAcl",
                "s3:GetBucketCORS",
                "s3:GetBucketLocation",
                "s3:GetBucketLogging",
                "s3:GetBucketMetadataTableConfiguration",
                "s3:GetBucketNotification",
                "s3:GetBucketObjectLockConfiguration",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketTagging",
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration",
                "s3:GetLifecycleConfiguration",
                "s3:GetMultiRegionAccessPoint",
                "s3:GetMultiRegionAccessPointPolicy",
                "s3:GetMultiRegionAccessPointPolicyStatus",
                "s3:GetReplicationConfiguration",
                "s3:GetStorageLensConfiguration",
                "s3:GetStorageLensConfigurationTagging",
                "s3:GetStorageLensGroup",
                "s3:ListAllMyBuckets",
                "sagemaker:Describe*",
                "sagemaker:List*",
                "scheduler:GetSchedule",
                "scheduler:GetScheduleGroup",
                "scheduler:List*",
                "schemas:Describe*",
                "schemas:GetResourcePolicy",
                "schemas:List*",
                "secretsmanager:Describe*",
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:List*",
                "securityhub:BatchGetAutomationRules",
                "securityhub:BatchGetSecurityControls",
                "securityhub:Describe*",
                "securityhub:GetConfigurationPolicy",
                "securityhub:GetConfigurationPolicyAssociation",
                "securityhub:GetEnabledStandards",
                "securityhub:GetFindingAggregator",
                "securityhub:GetInsights",
                "securityhub:List*",
                "securitylake:GetSubscriber",
                "securitylake:List*",
                "servicecatalog:Describe*",
                "servicecatalog:GetApplication",
                "servicecatalog:GetAttributeGroup",
                "servicecatalog:List*",
                "servicequotas:GetServiceQuota",
                "ses:Describe*",
                "ses:GetAccount",
                "ses:GetAddonInstance",
                "ses:GetAddonSubscription",
                "ses:GetArchive",
                "ses:GetConfigurationSet",
                "ses:GetConfigurationSetEventDestinations",
                "ses:GetContactList",
                "ses:GetDedicatedIpPool",
                "ses:GetDedicatedIps",
                "ses:GetEmailIdentity",
                "ses:GetEmailTemplate",
                "ses:GetIngressPoint",
                "ses:GetRelay",
                "ses:GetRuleSet",
                "ses:GetTemplate",
                "ses:GetTrafficPolicy",
                "ses:List*",
                "shield:Describe*",
                "shield:List*",
                "signer:GetSigningProfile",
                "signer:List*",
                "sns:GetDataProtectionPolicy",
                "sns:GetSubscriptionAttributes",
                "sns:GetTopicAttributes",
                "sns:List*",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:List*",
                "ssm-contacts:GetContact",
                "ssm-contacts:GetContactChannel",
                "ssm-contacts:List*",
                "ssm-incidents:GetReplicationSet",
                "ssm-incidents:GetResponsePlan",
                "ssm-incidents:List*",
                "ssm-sap:GetApplication",
                "ssm-sap:List*",
                "ssm:Describe*",
                "ssm:GetDefaultPatchBaseline",
                "ssm:GetDocument",
                "ssm:GetParameters",
                "ssm:GetPatchBaseline",
                "ssm:GetResourcePolicies",
                "ssm:List*",
                "sso:GetInlinePolicyForPermissionSet",
                "sso:GetManagedApplicationInstance",
                "sso:GetPermissionsBoundaryForPermissionSet",
                "sso:GetSharedSsoConfiguration",
                "sso:ListAccountAssignments",
                "sso:ListApplicationAssignments",
                "sso:ListApplications",
                "sso:ListCustomerManagedPolicyReferencesInPermissionSet",
                "sso:ListInstances",
                "sso:ListManagedPoliciesInPermissionSet",
                "sso:ListTagsForResource",
                "states:GetExecutionHistory",
                "states:Describe*",
                "states:List*",
                "support:CreateCase",
                "support:DescribeCases",
                "synthetics:Describe*",
                "synthetics:GetCanary",
                "synthetics:GetCanaryRuns",
                "synthetics:GetGroup",
                "synthetics:List*",
                "tag:GetResources",
                "timestream:Describe*",
                "timestream:List*",
                "transfer:Describe*",
                "transfer:List*",
                "verifiedpermissions:GetIdentitySource",
                "verifiedpermissions:GetPolicy",
                "verifiedpermissions:GetPolicyStore",
                "verifiedpermissions:GetPolicyTemplate",
                "verifiedpermissions:GetSchema",
                "verifiedpermissions:List*",
                "vpc-lattice:GetAccessLogSubscription",
                "vpc-lattice:GetAuthPolicy",
                "vpc-lattice:GetListener",
                "vpc-lattice:GetResourcePolicy",
                "vpc-lattice:GetRule",
                "vpc-lattice:GetService",
                "vpc-lattice:GetServiceNetwork",
                "vpc-lattice:GetServiceNetworkServiceAssociation",
                "vpc-lattice:GetServiceNetworkVpcAssociation",
                "vpc-lattice:GetTargetGroup",
                "vpc-lattice:List*",
                "wafv2:GetIPSet",
                "wafv2:GetLoggingConfiguration",
                "wafv2:GetRegexPatternSet",
                "wafv2:GetRuleGroup",
                "wafv2:GetWebACL",
                "wafv2:GetWebACLForResource",
                "wafv2:List*",
                "workspaces-web:GetBrowserSettings",
                "workspaces-web:GetIdentityProvider",
                "workspaces-web:GetNetworkSettings",
                "workspaces-web:GetPortal",
                "workspaces-web:GetPortalServiceProviderMetadata",
                "workspaces-web:GetTrustStore",
                "workspaces-web:GetUserAccessLoggingSettings",
                "workspaces-web:GetUserSettings",
                "workspaces-web:List*",
                "workspaces:Describe*",
                "xray:BatchGetTraces",
                "xray:GetGroup",
                "xray:GetGroups",
                "xray:GetSamplingRules",
                "xray:GetServiceGraph",
                "xray:GetTraceSummaries",
                "xray:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AIOPSAPIGatewayAccess",
            "Effect": "Allow",
            "Action": [
                "apigateway:GET"
            ],
            "Resource": [
                "arn:aws:apigateway:*::/restapis",
                "arn:aws:apigateway:*::/restapis/*",
                "arn:aws:apigateway:*::/restapis/*/deployments",
                "arn:aws:apigateway:*::/restapis/*/deployments/*",
                "arn:aws:apigateway:*::/restapis/*/resources/*/methods/*/integrations",
                "arn:aws:apigateway:*::/restapis/*/resources/*/methods/*/integrations/*",
                "arn:aws:apigateway:*::/restapis/*/stages",
                "arn:aws:apigateway:*::/restapis/*/stages/*",
                "arn:aws:apigateway:*::/apis",
                "arn:aws:apigateway:*::/apis/*",
                "arn:aws:apigateway:*::/apis/*/deployments",
                "arn:aws:apigateway:*::/apis/*/deployments/*",
                "arn:aws:apigateway:*::/apis/*/integrations",
                "arn:aws:apigateway:*::/apis/*/integrations/*",
                "arn:aws:apigateway:*::/apis/*/stages",
                "arn:aws:apigateway:*::/apis/*/stages/*",
                "arn:aws:apigateway:*::/domainnames/*"
            ]
        }
    ]
}
```

# Membatasi Akses Agen di AWS Akun
<a name="aws-devops-agent-security-limiting-agent-access-in-an-aws-account"></a>

AWS DevOps Agen menggunakan peran IAM untuk menemukan dan mendeskripsikan AWS sumber daya selama investigasi insiden dan evaluasi pencegahan. Anda dapat mengontrol tingkat akses yang dimiliki agen dengan mengonfigurasi kebijakan IAM yang dilampirkan pada peran ini. Topologi aplikasi tidak menunjukkan semua yang dapat diakses agen — kebijakan IAM adalah satu-satunya cara untuk benar-benar membatasi AWS layanan APIs dan sumber daya apa yang dapat diakses agen.

## Memahami peran IAM untuk Agen AWS DevOps
<a name="understanding-iam-roles-for-aws-devops-agent"></a>

AWS DevOps Agen menggunakan peran IAM untuk mengakses sumber daya dalam dua jenis akun:
+ **Peran akun utama** — Memberikan agen akses ke sumber daya di AWS akun tempat Anda membuat Ruang Agen.
+ **Peran akun sekunder** — Memberikan agen akses ke sumber daya di AWS akun tambahan yang Anda sambungkan ke Ruang Agen.

Untuk kedua jenis akun, Anda dapat membatasi AWS layanan mana yang dapat diakses agen, membatasi akses ke sumber daya tertentu dalam layanan tersebut, dan mengontrol wilayah mana agen dapat beroperasi.

## Memilih batas sumber daya Anda
<a name="choosing-your-resource-boundaries"></a>

Saat membatasi akses sumber daya, Anda perlu menyertakan izin yang cukup agar agen berhasil menyelidiki insiden aplikasi. Hal ini mencakup:
+ Semua sumber daya untuk aplikasi dalam ruang lingkup yang harus dipantau dan diselidiki oleh agen
+ Semua infrastruktur pendukung yang bergantung pada aplikasi tersebut

Infrastruktur pendukung dapat mencakup:
+ Komponen jaringan (VPCs, subnet, penyeimbang beban, gateway API)
+ Penyimpanan data (database, cache, penyimpanan objek)
+ Menghitung sumber daya (instans EC2, fungsi Lambda, wadah)
+ Layanan pemantauan dan pencatatan (CloudWatch, CloudTrail)
+ Sumber daya identitas dan manajemen akses yang diperlukan untuk memahami izin

Jika Anda membatasi akses terlalu sempit, agen mungkin tidak dapat mengidentifikasi akar penyebab yang berasal dari infrastruktur pendukung di luar batas yang Anda tetapkan.

## Membatasi akses layanan
<a name="restricting-service-access"></a>

Anda dapat membatasi AWS layanan mana yang dapat diakses agen dengan memodifikasi kebijakan IAM yang melekat pada peran agen. Saat membuat kebijakan khusus, ikuti praktik terbaik berikut:
+ **Berikan izin hanya-baca saja** — Agen perlu membaca konfigurasi sumber daya, metrik, dan log selama penyelidikan. Hindari pemberian izin yang memungkinkan agen untuk memodifikasi atau menghapus sumber daya.
+ **Batasi layanan yang diperlukan — Sertakan** hanya AWS layanan yang berisi sumber daya yang relevan dengan aplikasi Anda. Misalnya, jika aplikasi Anda tidak menggunakan Amazon RDS, jangan sertakan izin RDS dalam kebijakan.
+ **Gunakan tindakan spesifik alih-alih wildcard** — Alih-alih memberikan `service:*` izin, tentukan tindakan individual seperti atau. `cloudwatch:GetMetricData` `ec2:DescribeInstances`

Contoh kebijakan yang membatasi layanan tertentu:

```
json

{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:DescribeAlarms",
        "logs:GetLogEvents",
        "logs:FilterLogEvents",
        "ec2:DescribeInstances",
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "*"
    }
  ]
}
```

## Membatasi akses sumber daya
<a name="restricting-resource-access"></a>

Untuk membatasi agen ke sumber daya tertentu dalam layanan, gunakan izin tingkat sumber daya dalam kebijakan IAM Anda. Ini memungkinkan Anda memberikan akses hanya ke sumber daya yang cocok dengan pola tertentu.

**Menggunakan pola ARN sumber daya:**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "lambda:GetFunction",
        "lambda:GetFunctionConfiguration"
      ],
      "Resource": "arn:aws:lambda:*:*:function:production-*"
    }
  ]
}
```

Contoh ini membatasi agen untuk hanya mengakses fungsi Lambda dengan nama yang dimulai dengan “produksi-”.

**Menggunakan pembatasan berbasis tag:**

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeInstanceStatus"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Environment": "production"
        }
      }
    }
  ]
}
```

Contoh ini membatasi agen untuk hanya mengakses instans EC2 yang ditandai. `Environment=production`

## Membatasi akses regional
<a name="restricting-regional-access"></a>

Untuk membatasi AWS wilayah mana yang dapat diakses agen, gunakan kunci `aws:RequestedRegion` kondisi dalam kebijakan IAM Anda:

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "lambda:Get*",
        "cloudwatch:Get*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": [
            "us-east-1",
            "us-west-2"
          ]
        }
      }
    }
  ]
}
```

Contoh ini membatasi agen untuk mengakses sumber daya hanya di wilayah us-east-1 dan us-west-2.

## Membuat kebijakan IAM khusus
<a name="creating-custom-iam-policies"></a>

Saat membuat Ruang Agen atau menambahkan akun sekunder, Anda memiliki opsi untuk membuat peran IAM kustom menggunakan templat kebijakan. Ini memungkinkan Anda untuk menerapkan prinsip hak istimewa paling sedikit.

**Saat membuat Ruang Agen**

Dari konsol DevOps Agen di Konsol AWS Manajemen...
+ Pilih **Buat peran DevOps Agen baru menggunakan dokumen kebijakan** dan ikuti petunjuknya

**Saat mengedit Ruang Agen**

Dari konsol DevOps Agen di Konsol AWS Manajemen...
+ Pilih tab **Kemampuan**
+ Pilih akun sekunder yang ingin Anda edit dari bagian **Cloud** dan klik Edit
+ Pilih **Buat kebijakan DevOps Agen baru menggunakan templat** dan ikuti petunjuknya

## Praktik terbaik kebijakan kustom
<a name="custom-policy-best-practices"></a>
+ **Berikan izin hanya-baca saja - Hindari izin** yang memungkinkan modifikasi atau penghapusan sumber daya
+ **Gunakan izin tingkat sumber daya bila memungkinkan** — Batasi akses ke sumber daya tertentu menggunakan pola atau tag ARN
+ **Tinjau dan audit izin** secara berkala - Tinjau kebijakan IAM agen secara berkala untuk memastikan kebijakan tersebut tetap selaras dengan persyaratan keamanan Anda

# Menyiapkan Autentikasi Pusat Identitas IAM
<a name="aws-devops-agent-security-setting-up-iam-identity-center-authentication"></a>

Autentikasi IAM Identity Center menyediakan cara terpusat untuk mengelola akses pengguna ke aplikasi web AWS DevOps Agent Space. Panduan ini menjelaskan cara mengonfigurasi autentikasi IAM Identity Center dan mengelola pengguna.

## Prasyarat
<a name="prerequisites"></a>

Sebelum menyiapkan autentikasi IAM Identity Center, pastikan Anda memiliki:
+ Pusat Identitas IAM diaktifkan di organisasi atau akun
+ Izin administrator di Agen AWS DevOps 
+ Ruang Agen yang dikonfigurasi atau siap dibuat

## Opsi otentikasi
<a name="authentication-options"></a>

AWS DevOps Agen menawarkan dua metode otentikasi untuk mengakses aplikasi web Agent Space:

**Autentikasi IAM Identity Center** — Direkomendasikan untuk lingkungan produksi. Menyediakan manajemen pengguna terpusat, integrasi dengan penyedia identitas eksternal, dan sesi hingga 12 jam.

**Akses admin (autentikasi IAM)** - Menyediakan akses cepat untuk administrator selama pengaturan dan konfigurasi awal. Sesi dibatasi hingga 30 menit.

## Mengkonfigurasi Pusat Identitas IAM selama pembuatan Ruang Agen
<a name="configuring-iam-identity-center-during-agent-space-creation"></a>

Saat Anda membuat Ruang Agen, Anda dapat mengonfigurasi autentikasi Pusat Identitas IAM pada tab **Access**:

### Langkah 1: Arahkan ke konfigurasi aplikasi Web
<a name="step-1-navigate-to-the-web-app-configuration"></a>

1. Setelah mengonfigurasi detail Ruang Agen dan akses AWS akun Anda, lanjutkan ke tab **Akses**

1. Anda akan melihat dua bagian: “Connect IAM Identity Center” dan “Admin access”

### Langkah 2: Konfigurasikan integrasi Pusat Identitas IAM
<a name="step-2-configure-iam-identity-center-integration"></a>

Di bagian **Connect [Agent Space] ke IAM Identity Center**:

1. **Verifikasi instans Pusat Identitas IAM** — Konsol menampilkan instans Pusat Identitas mana yang akan mengelola akses pengguna Aplikasi Web (misalnya,`ssoins-7223a9580931edbe`). Instance IAM Identity Center terdekat Anda akan secara otomatis diisi sebelumnya.

1. **Pilih opsi Nama Peran Aplikasi Pusat Identitas IAM** - Pilih salah satu dari tiga opsi:

**Buat peran DevOps Agen baru secara otomatis** (disarankan):
+ Sistem secara otomatis membuat peran layanan baru dengan izin yang sesuai
+ Ini adalah opsi paling sederhana dan berfungsi untuk sebagian besar kasus penggunaan

**Tetapkan peran yang ada**:
+ Gunakan peran IAM yang sudah ada yang telah Anda buat
+ Sistem akan memverifikasi peran memiliki izin yang diperlukan
+ Pilih opsi ini jika organisasi Anda memiliki peran yang telah dibuat sebelumnya untuk Agen AWS DevOps 

**Membuat peran DevOps Agen baru menggunakan templat kebijakan**:
+ Gunakan detail kebijakan yang disediakan untuk membuat peran kustom Anda sendiri di Konsol IAM
+ Pilih opsi ini jika Anda perlu menyesuaikan izin peran

Setelah mengklik Connect, sistem secara otomatis:
+ Membuat atau mengonfigurasi peran IAM yang ditentukan
+ Menyiapkan aplikasi Pusat Identitas IAM untuk Ruang Agen Anda
+ Membangun hubungan kepercayaan antara IAM Identity Center dan aplikasi web Agent Space
+ Mengkonfigurasi alur otentikasi OAuth 2.0 untuk akses pengguna yang aman

### Alternatif: Menggunakan akses admin
<a name="alternative-using-admin-access"></a>

Jika Anda ingin segera mengakses aplikasi web Agent Space tanpa menyiapkan Pusat Identitas IAM:

1. Di bagian **akses Admin**, perhatikan ARN Peran IAM yang menyediakan akses administrator (misalnya,) `arn:aws:iam::440491339484:role/service-role/DevOpsAgentRole-WebappAdmin-15ppoc42`

1. Klik tombol **akses Admin** biru untuk meluncurkan aplikasi web Agent Space dengan autentikasi IAM

1. Sesi menggunakan metode ini dibatasi hingga 30 menit

**catatan**  
**Akses admin ditujukan untuk pengaturan dan konfigurasi awal. Untuk penggunaan produksi dan operasi yang sedang berlangsung, konfigurasikan autentikasi IAM Identity Center.

## Menambahkan Pengguna dan Grup
<a name="adding-users-and-groups"></a>

Setelah mengonfigurasi autentikasi Pusat Identitas IAM, Anda perlu memberi pengguna dan grup tertentu akses ke aplikasi web Agent Space:

### Langkah 1: Akses manajemen pengguna
<a name="step-1-access-user-management"></a>

1. Di konsol AWS DevOps Agen, pilih Ruang Agen

1. Buka tab **Access**

1. Di bawah **Akses Pengguna**, klik **Kelola Pengguna dan Grup**

### Langkah 2: Tambahkan pengguna atau grup
<a name="step-2-add-users-or-groups"></a>

1. Pilih **Tambah Pengguna atau Grup**

1. Cari pengguna atau grup di direktori Pusat Identitas IAM

1. Pilih kotak centang di samping pengguna atau grup yang ingin Anda tambahkan

1. Klik **Tambah** untuk memberi mereka akses

Pengguna yang dipilih sekarang dapat mengakses aplikasi web Agent Space menggunakan kredensi IAM Identity Center mereka.

### Bekerja dengan penyedia identitas eksternal
<a name="working-with-external-identity-providers"></a>

Jika Anda menggunakan penyedia identitas eksternal (seperti Okta, Microsoft Entra ID, atau Ping Identity) dengan IAM Identity Center:
+ Pengguna dan grup disinkronkan dari penyedia identitas eksternal Anda ke Pusat Identitas IAM
+ Saat menambahkan pengguna dan grup ke aplikasi web Agent Space, Anda memilih dari direktori yang disinkronkan
+ Atribut pengguna dan keanggotaan grup dikelola oleh penyedia identitas eksternal Anda
+ Perubahan pada penyedia identitas Anda secara otomatis tercermin di Pusat Identitas IAM setelah sinkronisasi

## Cara pengguna mengakses aplikasi web Agent Space
<a name="how-users-access-the-agent-space-web-app"></a>

Setelah menambahkan pengguna ke Ruang Agen Anda:

1. Bagikan URL aplikasi web Agent Space dengan pengguna yang berwenang

1. Saat pengguna menavigasi ke URL, mereka diarahkan ke halaman login IAM Identity Center

1. Setelah memasukkan kredensialnya (dan menyelesaikan MFA jika dikonfigurasi), mereka dialihkan kembali ke aplikasi web Agent Space

1. Sesi mereka berlaku selama 8 jam secara default (dapat dikonfigurasi oleh administrator Pusat Identitas)

## Mengelola akses pengguna
<a name="managing-user-access"></a>

Anda dapat memperbarui akses pengguna kapan saja:

**Menambahkan lebih banyak pengguna atau grup:**
+ Ikuti langkah yang sama yang dijelaskan di atas untuk menambahkan pengguna atau grup tambahan

**Menghapus akses:**

1. Di bagian **Akses Pengguna**, temukan pengguna atau grup yang akan dihapus

1. Klik tombol **Hapus** di samping nama mereka

1. Konfirmasikan penghapusan

Pengguna yang dihapus akan segera kehilangan akses, tetapi sesi aktif dapat berlanjut hingga kedaluwarsa.

## Manajemen sesi
<a name="session-management"></a>

Sesi IAM Identity Center untuk aplikasi web Agent Space memiliki karakteristik sebagai berikut:
+ **Durasi sesi default** - 8 jam
+ **Keamanan sesi** - Cookie khusus HTTP untuk perlindungan yang ditingkatkan
+ **Otentikasi multi-faktor** - Didukung saat dikonfigurasi di Pusat Identitas IAM
+ **Kredensial API** — Kredensi Sigv4 berdurasi pendek (15 menit) dikeluarkan untuk panggilan API dan diperbarui secara otomatis

Untuk mengonfigurasi durasi sesi:

1. Arahkan ke konsol Pusat Identitas IAM

1. Buka **Pengaturan** > **Otentikasi**

1. Di bawah **Durasi sesi**, konfigurasikan durasi pilihan Anda (dari 1 jam hingga 12 jam)

1. Pilih **Save changes (Simpan perubahan)**

## Memutuskan Pusat Identitas
<a name="disconnecting-identity-center"></a>

1. Di konsol Agent Space Anda, klik **Tindakan** di kanan atas dan pilih **Putuskan sambungan dari Pusat Identitas IAM**

1. Konfirmasikan dalam dialog konfirmasi

# Menyiapkan Otentikasi Penyedia Identitas Eksternal (IDP)
<a name="aws-devops-agent-security-setting-up-external-identity-provider-idp-authentication"></a>

Autentikasi penyedia identitas eksternal (iDP) memungkinkan organisasi Anda menggunakan penyedia identitas yang kompatibel dengan OIDC yang ada, seperti Okta atau Microsoft Entra ID, untuk mengelola akses pengguna ke aplikasi web Agent Space. AWS DevOps Pengguna masuk dengan kredensi perusahaan mereka langsung melalui IDP Anda, tanpa memerlukan AWS Pusat Identitas IAM.

## Prasyarat
<a name="prerequisites"></a>

Sebelum menyiapkan otentikasi iDP eksternal, pastikan Anda memiliki:
+ Penyedia identitas yang kompatibel dengan OIDC (Okta atau Microsoft Entra ID)
+ Akses administrator ke penyedia identitas Anda
+ Izin administrator untuk mengakses konsol AWS DevOps Agen
+ Ruang Agen yang dikonfigurasi atau siap dibuat

## Cara kerjanya
<a name="how-it-works"></a>

Saat Anda mengonfigurasi otentikasi iDP eksternal:
+ Pengguna menavigasi ke URL aplikasi web Agent Space
+ Mereka diarahkan ke halaman login penyedia identitas Anda
+ Setelah mengautentikasi dengan kredensi perusahaan mereka, mereka diarahkan kembali ke aplikasi web
+ Aplikasi web menukar token otentikasi dengan AWS kredensil berumur pendek yang dicakup ke Ruang Agen

Sesi berlaku hingga 8 jam. Kredensil secara otomatis disegarkan menggunakan token penyegaran OIDC tanpa mengharuskan pengguna untuk mengautentikasi ulang.

## Mengkonfigurasi otentikasi iDP eksternal
<a name="configuring-external-idp-authentication"></a>

### Langkah 1: Daftarkan aplikasi di penyedia identitas Anda
<a name="step-1-register-an-application-in-your-identity-provider"></a>

Pilih penyedia identitas Anda dan ikuti petunjuk penyiapan yang sesuai.

#### Opsi A: Okta
<a name="option-a-okta"></a>

1. Di Konsol Admin Okta, navigasikan ke **Applications > **Applications**** dan pilih **Create App Integration**

1. Pilih **OIDC - OpenID Connect** sebagai metode login dan **Aplikasi Web sebagai jenis aplikasi**. Pilih **Berikutnya**

1. Tetapkan nama deskriptif untuk aplikasi (misalnya,`AWS DevOps Agent`)

1. Di bawah **jenis Hibah**, pastikan hal-hal berikut diperiksa:
   + **Kode Otorisasi** (default)
   + **Refresh Token** — Ini diperlukan untuk penyegaran sesi. Jika tidak diaktifkan, pengguna tidak akan dapat mempertahankan sesi.

**catatan**  
**Okta tidak mengaktifkan jenis hibah Refresh Token secara default. Anda harus mengaktifkannya secara eksplisit.

1. Biarkan **pengalihan Masuk URIs** sebagai nilai default untuk saat ini - Anda akan memperbaruinya setelah mengonfigurasi Ruang Agen

1. Di bawah **Penugasan**, tetapkan pengguna atau grup yang seharusnya memiliki akses

1. Pilih **Simpan**.

1. Pada tab **Umum** aplikasi, perhatikan nilai-nilai berikut:
   + **ID Klien**
   + **Rahasia klien** - Pilih **Salin** untuk menyimpan nilai ini dengan aman

1. Perhatikan **domain Okta** Anda — ini adalah URL Penerbit Anda (misalnya,`https://dev-12345678.okta.com`).

**catatan**  
**Pada** **tab Masuk, verifikasi** Penerbit **diatur ke** URL Okta ** (bukan Dinamis). Ini memastikan URL penerbit yang stabil.

**catatan**  
**Jangan menambahkan** ** klaim grup ke token ID di tab Klaim server otorisasi Anda. AWS DevOps Agen tidak menggunakan keanggotaan grup dari IDP Anda.

#### Opsi B: Microsoft Entra ID
<a name="option-b-microsoft-entra-id"></a>

1. **Di portal Azure, navigasikan ke **Microsoft Entra ID** > **Pendaftaran aplikasi > Pendaftaran baru****

1. Tetapkan nama deskriptif (misalnya,`AWS DevOps Agent`)

1. Di bawah **Jenis akun yang didukung**, pilih opsi yang sesuai untuk organisasi Anda (biasanya **hanya Akun di direktori organisasi ini**)

1. Biarkan **URI Redirect** kosong untuk saat ini. Pilih **Daftar**

1. Pada halaman **Ikhtisar** aplikasi, perhatikan nilai-nilai berikut:
   + **ID Aplikasi (klien)** — digunakan sebagai ID Klien saat mengonfigurasi Ruang Agen
   + **ID Direktori (penyewa)** - digunakan untuk membangun URL Penerbit

1. Arahkan ke **Sertifikat & rahasia> Rahasia** **klien baru**
   + Tetapkan deskripsi dan periode kedaluwarsa
   + Pilih **Tambah** dan salin **Nilai** rahasia segera - itu tidak akan ditampilkan lagi

1. URL Penerbit untuk ID Entra mengikuti format ini. Ganti `{tenant-id}` dengan ID Direktori (penyewa) Anda dari langkah 5:
   + `https://login.microsoftonline.com/{tenant-id}/v2.0`

**catatan**  
**Jangan aktifkan** **klaim opsional grup dalam** konfigurasi Token**. AWS DevOps Agen tidak menggunakan keanggotaan grup dari IDP Anda.

### Langkah 2: Aktifkan Aplikasi Operator dengan otentikasi IDP
<a name="step-2-enable-the-operator-app-with-idp-authentication"></a>

1. Di konsol AWS DevOps Agen, pilih Ruang Agen

1. Buka tab **Access**

1. Di bawah **Akses pengguna**, pilih **Penyedia identitas eksternal**

1. Dalam formulir konfigurasi, konfigurasikan yang berikut ini:
   + **Penyedia Identitas** — Pilih penyedia identitas Anda (Okta atau Microsoft Entra ID)
   + URL **Penerbit — URL** penerbit OIDC dari penyedia identitas Anda
   + **ID Klien** — ID klien dari aplikasi OIDC yang Anda buat
   + **Rahasia Klien** - Rahasia klien dari aplikasi OIDC Anda

1. Di bawah **Nama Peran Aplikasi Penyedia Identitas**, pilih salah satu dari tiga opsi:
   + **Buat peran DevOps Agen baru secara otomatis** (disarankan) - Membuat peran layanan baru dengan izin yang sesuai
   + **Menetapkan peran yang ada — Gunakan peran** IAM yang sudah ada yang telah Anda buat
   + **Membuat peran DevOps Agen baru menggunakan templat kebijakan** — Gunakan detail yang disediakan untuk membuat peran Anda sendiri di Konsol IAM

1. Tinjau peringatan peringatan **URL Callback** yang ditampilkan di bagian bawah formulir. Salin URL ini — Anda harus menambahkannya ke pengalihan yang diizinkan penyedia identitas Anda URIs sebelum pengguna dapat masuk.

1. Pilih **Connect**

Setelah memilih **Connect**, konsol menampilkan **Konfigurasi Penyedia Identitas Eksternal** dengan detail berikut:
+ **Penyedia** — Penyedia identitas yang Anda pilih
+ URL **Penerbit - URL** penerbit OIDC yang dikonfigurasi
+ **ID Klien - ID** klien yang dikonfigurasi
+ **IAM Role ARN** — Peran IAM yang digunakan untuk akses pengguna
+ **URL Callback** - Konfigurasikan URL ini di penyedia identitas Anda sebagai URI pengalihan yang diizinkan
+ **Login URL** — Gunakan URL ini untuk mengakses aplikasi web melalui penyedia identitas Anda

### Langkah 3: Tambahkan URL callback ke penyedia identitas Anda
<a name="step-3-add-the-callback-url-to-your-identity-provider"></a>

#### Okta
<a name="okta"></a>

1. Di Konsol Admin Okta, arahkan ke tab **Umum** aplikasi Anda

1. Di bawah **Login**, pilih **Edit**

1. Tambahkan URL callback sebagai URI **pengalihan Masuk**:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (Opsional) Atur **URI Inisiate login** untuk mengaktifkan login yang dimulai IDP dari dasbor Okta:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. (Disarankan) Tambahkan **URI pengalihan Keluar untuk mengarahkan** pengguna kembali ke aplikasi web setelah logout. Tanpa ini, pengguna mungkin melihat halaman kesalahan saat keluar:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. Pilih **Simpan**.

#### ID Microsoft Entra
<a name="microsoft-entra-id"></a>

1. Di portal Azure, navigasikan ke halaman **Otentikasi** aplikasi Anda

1. **Di bawah **Konfigurasi Platform**, pilih **Tambahkan platform** > Web**

1. Masukkan URL callback sebagai URI **Redirect**:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/callback`

1. (Opsional) Tambahkan URI pengalihan keluar untuk mengarahkan pengguna kembali ke aplikasi web setelah logout:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome`

1. Pilih **Konfigurasi**

### Langkah 4: Verifikasi konfigurasi
<a name="step-4-verify-the-configuration"></a>

1. Arahkan ke **URL Login** yang ditampilkan di konsol:
   + `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/idp/login`

1. Anda harus diarahkan ke halaman login penyedia identitas Anda

1. Masuk dengan kredensi perusahaan Anda

1. Setelah otentikasi berhasil, Anda diarahkan kembali ke aplikasi web Agent Space

## Memperbarui konfigurasi iDP
<a name="updating-idp-configuration"></a>

Anda dapat memutar rahasia klien tanpa memutuskan sambungan:

1. Di konsol AWS DevOps Agen, pilih Ruang Agen

1. Buka tab **Access**

1. Di bawah **Konfigurasi Penyedia Identitas Eksternal**, pilih **Putar rahasia klien**

1. Masukkan **Rahasia Klien** baru

1. Pilih **Simpan**.

Untuk mengubah bidang konfigurasi iDP lainnya (seperti URL Penerbit, ID Klien, atau penyedia identitas), Anda harus memutuskan sambungan iDP yang ada dan mengonfigurasi yang baru.

## Cara pengguna mengakses aplikasi web Agent Space
<a name="how-users-access-the-agent-space-web-app"></a>

Setelah mengkonfigurasi otentikasi iDP eksternal:
+ Bagikan URL aplikasi web Agent Space dengan pengguna yang berwenang
+ Saat pengguna menavigasi ke URL, mereka diarahkan ke halaman login penyedia identitas Anda
+ Setelah memasukkan kredensialnya (dan menyelesaikan MFA jika dikonfigurasi oleh IDP Anda), mereka dialihkan kembali ke aplikasi web Agent Space
+ Sesi disegarkan secara otomatis - lihat [Manajemen sesi](#session-management) untuk detailnya

## Manajemen sesi
<a name="session-management"></a>

Sesi IDP eksternal untuk aplikasi web Agent Space memiliki karakteristik sebagai berikut:
+ **Durasi sesi** - Sesi browser berlangsung hingga 8 jam. Ini tidak dapat dikonfigurasi di AWS DevOps Agen. Jika masa pakai sesi IDP Anda melebihi 8 jam, pengguna dapat diautentikasi ulang secara otomatis pada kunjungan berikutnya tanpa memasukkan kredensialnya. Konfigurasikan sesi IDP dan masa pakai token Anda sesuai dengan persyaratan keamanan organisasi Anda.
+ **Penyegaran kredenal** - Sesi disegarkan secara otomatis menggunakan token penyegaran OIDC tanpa mengharuskan pengguna untuk mengautentikasi ulang
+ **Otentikasi multi-faktor** — Didukung saat dikonfigurasi di penyedia identitas Anda. IDP menangani MFA selama login — tidak ada konfigurasi tambahan yang diperlukan di Agen AWS DevOps 

### Perilaku logout
<a name="logout-behavior"></a>

Saat pengguna mengklik **Logout** di aplikasi web:

1. Semua cookie sesi segera dihapus

1. Pengguna dialihkan ke titik akhir logout OIDC penyedia identitas untuk mengakhiri sesi SSO

1. Jika URI pengalihan keluar dikonfigurasi, pengguna akan diarahkan kembali ke halaman selamat datang aplikasi web

### Mencabut akses pengguna
<a name="revoking-user-access"></a>

Untuk segera mencabut akses pengguna, Anda dapat mencabut sesi mereka secara langsung di portal admin penyedia identitas Anda:
+ **Okta** - Di Konsol Admin Okta, arahkan ke **Direktori** > **Orang**, pilih pengguna, pilih **Tindakan Lainnya** > **Hapus** Sesi Pengguna
+ **Microsoft Entra ID** **- Di portal Azure, navigasikan ke **Pengguna**, pilih pengguna, dan pilih Cabut sesi**

## Pertimbangan keamanan
<a name="security-considerations"></a>

**Penyimpanan rahasia klien** - Rahasia klien yang Anda berikan selama penyiapan dienkripsi menggunakan kunci KMS yang dikelola pelanggan jika Anda menyediakannya saat membuat Ruang Agen, atau kunci milik layanan sebaliknya. Itu tidak pernah dikembalikan dalam respons API atau ditampilkan di konsol setelah konfigurasi awal.

**Rotasi rahasia klien** - Rahasia klien Entra memiliki kedaluwarsa yang dapat dikonfigurasi. Tetapkan pengingat untuk memutar rahasia sebelum kedaluwarsa menggunakan opsi **Rotate client secret** di konsol AWS DevOps Agen. Jika rahasia kedaluwarsa, pengguna tidak akan dapat masuk sampai diputar.

**Manajemen seumur hidup token** — Masa pakai token (token akses, token penyegaran) yang dikeluarkan oleh penyedia identitas Anda dikendalikan oleh konfigurasi IDP Anda. Kami merekomendasikan untuk mengonfigurasi masa pakai token yang sesuai di IDP Anda:
+ **Okta** **— Konfigurasikan masa pakai token di bawah **Keamanan** > **API** > **Server Otorisasi** > Kebijakan Akses**
+ **Microsoft Entra ID** — Konfigurasikan masa pakai token menggunakan kebijakan seumur hidup [token](https://learn.microsoft.com/en-us/entra/identity-platform/configurable-token-lifetimes)

**Klaim grup** — Jangan aktifkan klaim grup dalam konfigurasi token penyedia identitas Anda. AWS DevOps Agen saat ini tidak menggunakan keanggotaan grup dari IDP Anda.

**Pengenal pengguna** — AWS DevOps Agen menggunakan klaim khusus penyedia untuk mengidentifikasi pengguna secara unik:
+ **Okta** — Menggunakan `sub` klaim dari token ID
+ **Microsoft Entra ID** — Menggunakan klaim `oid` (pengenal objek) dari token ID

Pengidentifikasi ini tidak dapat diubah dan muncul di CloudTrail log untuk tujuan audit.

## Memutuskan sambungan iDP eksternal
<a name="disconnecting-external-idp"></a>

1. Di konsol AWS DevOps Agen, pilih Ruang Agen

1. Buka tab **Access**

1. Di bawah **Akses pengguna**, pilih Putuskan **sambungan**

1. Tinjau dampak yang tercantum dalam dialog konfirmasi dan konfirmasi

Memutuskan sambungan akan:
+ Hapus konfigurasi iDP dari Ruang Agen
+ Mencegah pengguna masuk melalui penyedia identitas eksternal
+ Hapus obrolan individual dan riwayat artefak yang terkait dengan akun pengguna iDP

Sesi pengguna aktif akan berlanjut hingga kedaluwarsa atau penyegaran kredenal berikutnya gagal.

## Pemecahan masalah
<a name="troubleshooting"></a>
+ **Pengalihan ke IDP** gagal — Verifikasi URL Penerbit cocok dengan titik akhir penemuan OIDC IDP Anda. Untuk Okta, pastikan **Penerbit** diatur ke **URL Okta** (bukan **Dinamis**) pada tab **Masuk**. Untuk Entra, gunakan `https://login.microsoftonline.com/{tenant-id}/v2.0` formatnya.
+ **Akses ditolak atau kesalahan kebijakan (Okta)** - Verifikasi pengguna atau grup mereka ditetapkan ke aplikasi di bawah **Penugasan**. Periksa **Masuk** **> Aturan Kebijakan** Masuk.
+ **Kesalahan konfigurasi IDP setelah login** — Penyedia identitas Anda tidak mengembalikan token penyegaran. Pastikan `offline_access` cakupan dan jenis hibah token refresh diaktifkan:
  + **Okta** **— Buka tab **Umum** aplikasi Anda dan aktifkan kotak centang **Refresh Token** di bawah Jenis Grant**
  + **Entra** - Buka izin **API dan pastikan terdaftar di bawah izin** `offline_access` yang didelegasikan
+ **Otentikasi berhasil tetapi aplikasi web menunjukkan kesalahan** — Verifikasi URI pengalihan di iDP Anda sama persis dengan **URL Callback** yang ditampilkan di konsol Agen. AWS DevOps 
+ **Kegagalan otentikasi** — Jika klaim opsional **grup** diaktifkan di IDP Anda, nonaktifkan. AWS DevOps Agen tidak menggunakan klaim grup.
+ **Login gagal setelah otentikasi IDP** **- Untuk Entra, verifikasi tidak `requestedAccessTokenVersion` diatur ke `null` dalam Manifest aplikasi.** Untuk Okta, verifikasi **URL Penerbit** sudah benar.
+ **Halaman kesalahan setelah mengklik Keluar (Okta)** **- Jika Anda melihat `post_logout_redirect_uri` kesalahan setelah keluar, tambahkan `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome` sebagai **URI pengalihan Keluar** di tab Umum aplikasi Okta Anda.**
+ **Pengguna tetap berada di halaman penyedia identitas setelah logout (Entra)** **— Untuk mengarahkan pengguna kembali ke aplikasi web setelah logout, tambahkan `https://{agentSpaceId}.aidevops.global.app.aws/authorizer/welcome` sebagai **URI Pengalihan** di halaman Otentikasi aplikasi Entra Anda.**

# Enkripsi saat istirahat untuk AWS DevOps Agen
<a name="aws-devops-agent-security-encryption-at-rest-for-devops-agent"></a>

AWS DevOps Agen mengenkripsi semua data pelanggan saat istirahat. Secara default, AWS DevOps Agen menggunakan kunci yang AWS dimiliki untuk mengenkripsi data Anda secara otomatis tanpa biaya tambahan. Anda tidak dapat melihat, mengelola, atau mengaudit penggunaan kunci yang AWS dimiliki. Namun, Anda tidak perlu mengambil tindakan apa pun untuk melindungi kunci-kunci ini. Data Anda diamankan secara otomatis.

Anda dapat memilih untuk mengenkripsi data menggunakan kunci terkelola pelanggan simetris yang Anda buat, miliki, dan kelola di AWS Key Management Service (AWS KMS). Karena Anda memiliki kontrol penuh atas lapisan enkripsi ini, Anda dapat melakukan tugas-tugas seperti berikut:
+ Menetapkan dan memelihara kebijakan utama
+ Mengaktifkan dan menonaktifkan kebijakan utama
+ Memutar bahan kriptografi kunci
+ Menambahkan tanda
+ Membuat alias kunci
+ Kunci penjadwalan untuk penghapusan

Untuk informasi selengkapnya, lihat [Kunci terkelola pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) di *Panduan Pengembang Layanan Manajemen AWS Kunci*.

**catatan**  
** AWS DevOps Agen secara otomatis mengaktifkan enkripsi saat istirahat menggunakan kunci yang AWS dimiliki untuk melindungi data pelanggan tanpa biaya. Biaya AWS KMS standar berlaku saat Anda menggunakan kunci yang dikelola pelanggan. Untuk informasi selengkapnya tentang harga, lihat [harga Layanan Manajemen AWS Utama](https://aws.amazon.com/kms/pricing/).

## Kunci yang dikelola pelanggan
<a name="customer-managed-keys"></a>

Kunci yang dikelola pelanggan adalah kunci KMS di AWS akun Anda yang Anda buat, miliki, dan kelola. Anda memiliki kendali penuh atas kunci KMS ini, termasuk menetapkan dan memelihara kebijakan utama mereka.

Saat Anda mengonfigurasi kunci terkelola pelanggan, AWS DevOps Agen menggunakannya untuk melindungi data sumber daya yang sensitif. AWS DevOps Agen menggunakan [enkripsi amplop dengan keyring](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#envelope-encryption) hierarkis AWS Encryption SDK. Kunci KMS Anda digunakan untuk menghasilkan kunci cabang, yang pada gilirannya melindungi data Anda.

Anda dapat menentukan kunci terkelola pelanggan saat membuat sumber daya berikut:
+ **Ruang Agen** — Mengenkripsi detail Ruang Agen dan konten yang dibuat dari Aplikasi Web DevOps Agen yang terkait dengan investigasi, keterampilan, dan obrolan.
+ **Layanan** — Mengenkripsi kredensi layanan pihak ketiga saat istirahat.

Untuk mengonfigurasi kunci terkelola pelanggan di AWS DevOps Agen, ikuti langkah-langkah berikut.

### Langkah 1: Buat kunci yang dikelola pelanggan
<a name="step-1-create-a-customer-managed-key"></a>

Anda dapat membuat kunci terkelola pelanggan simetris dengan menggunakan konsol AWS KMS atau AWS KMS API. Kuncinya harus memenuhi persyaratan berikut:


| Properti | Persyaratan | 
| --- | --- | 
| Tipe Kunci | Simetris | 
| Spesifikasi kunci | SYMMETRIC\$1DEFAULT | 
| Penggunaan kunci | ENCRYPT\$1DECRYPT | 

**catatan**  
** AWS DevOps Agen hanya mendukung kunci KMS enkripsi simetris dengan spesifikasi `SYMMETRIC_DEFAULT` kunci dan penggunaan kunci. `ENCRYPT_DECRYPT` Tombol Multi-Region dan kunci asimetris saat ini tidak didukung.

Untuk informasi selengkapnya, lihat [Membuat kunci terkelola pelanggan simetris](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) di *Panduan Pengembang Layanan Manajemen AWS Kunci*.

### Langkah 2: Tetapkan kebijakan kunci
<a name="step-2-set-the-key-policy"></a>

Kebijakan utama mengontrol akses ke kunci yang dikelola pelanggan Anda. Setiap kunci yang dikelola pelanggan harus memiliki persis satu kebijakan utama, yang berisi pernyataan yang menentukan siapa yang dapat menggunakan kunci dan bagaimana mereka dapat menggunakannya.

Kebijakan utama Anda harus memberikan izin kepada prinsipal panggilan (identitas IAM Anda) dan layanan AWS DevOps Agen. AWS DevOps Agen mengakses kunci Anda menggunakan dua set kredensil:

1. **Kredensi pemanggil Anda** — Digunakan untuk semua operasi sinkron, termasuk validasi kunci, enkripsi pada waktu pembuatan sumber daya, dan panggilan API apa pun yang mengembalikan respons langsung ke pemanggil.

1. **AWS DevOps Prinsipal layanan agen** — Digunakan untuk operasi asinkron yang berjalan di latar belakang, seperti investigasi operasional, analisis insiden, korelasi peristiwa, dan pembuatan analisis akar penyebab.

Tabel berikut mencantumkan tindakan KMS yang diperlukan:


| Aksi KMS | Deskripsi | 
| --- | --- | 
| kms:DescribeKey | Validasi konfigurasi kunci pada waktu pembuatan sumber daya | 
| kms:GenerateDataKey | Hasilkan kunci enkripsi data untuk enkripsi amplop | 
| kms:Decrypt | Dekripsi data | 
| kms:Encrypt | Enkripsi data | 
| kms:ReEncrypt | Enkripsi ulang data di bawah kunci yang sama atau berbeda | 

AWS DevOps Agen memvalidasi semua izin ini pada waktu konfigurasi menggunakan operasi dry-run. Jika ada izin yang hilang, permintaan gagal dengan pengecualian.

Berikut ini adalah contoh kebijakan kunci. Ganti nilai placeholder dengan milik Anda sendiri.

```
{
  "Version": "2012-10-17",		 	 	 		 	 	 
  "Statement": [
    {
      "Sid": "AllowCallerAccessViaService",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/DevOpsAgentUserRole"
      },
      "Action": [
        "kms:DescribeKey",
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "aidevops.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowDevOpsAgentServiceDescribeKeyAccess",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:DescribeKey"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowDevOpsAgentAccessForAgentSpace",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*"
        },
        "StringLike": {
          "kms:EncryptionContext:aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*"
        }
      }
    },
    {
      "Sid": "AllowDevOpsAgentAccessForService",
      "Effect": "Allow",
      "Principal": {
        "Service": "aidevops.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey*",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:ReEncrypt*"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:service/*"
        },
        "StringLike": {
          "kms:EncryptionContext:aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:us-east-1:111122223333:service/*"
        }
      }
    }
  ]
}
```

Kebijakan tersebut berisi pernyataan berikut:
+ **AllowKeyAdministration**— Memberikan root akun akses administratif penuh ke kunci. Ganti `111122223333` dengan ID AWS akun Anda.
+ **AllowCallerAccessViaService**— Memberikan kepala sekolah IAM Anda izin KMS yang diperlukan untuk semua operasi Agen sinkron. AWS DevOps Ini termasuk validasi kunci pada waktu pembuatan sumber daya, serta mengenkripsi dan mendekripsi operasi untuk setiap panggilan API yang mengembalikan respons langsung ke pemanggil. `kms:ViaService`Kondisi ini memastikan bahwa Anda dapat menggunakan kunci hanya melalui layanan AWS DevOps Agen. Ganti `111122223333` dengan ID AWS akun Anda dan `us-east-1` dengan AWS Wilayah Anda.
+ **AllowDevOpsAgentServiceAccessForAgentSpace**/**AllowDevOpsAgentServiceAccessForService**— Memberikan kepala `aidevops.amazonaws.com` layanan izin KMS yang diperlukan untuk operasi asinkron. AWS DevOps Agen menggunakan prinsip layanan ini untuk mengenkripsi dan mendekripsi data Anda saat melakukan operasi latar belakang seperti investigasi operasional, menganalisis insiden, menghubungkan peristiwa di seluruh layanan, dan menghasilkan analisis akar penyebab. Tanpa akses ini, AWS DevOps Agen tidak dapat membaca data terenkripsi yang diperlukan untuk melakukan penyelidikan atas nama Anda. `aws:SourceArn`Kondisi ini membatasi akses ke permintaan yang berasal dari sumber daya AWS DevOps Agen Anda, dan `kms:EncryptionContext` kondisi memastikan bahwa konteks enkripsi cocok dengan sumber daya Anda. ARNs Ganti `111122223333` dengan ID AWS akun Anda dan `us-east-1` dengan AWS Wilayah Anda.

Untuk informasi selengkapnya tentang kebijakan utama, lihat [Kebijakan utama di AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) di *Panduan Pengembang Layanan Manajemen AWS Utama*.

### Langkah 3: Tentukan kunci saat membuat sumber daya
<a name="step-3-specify-the-key-when-creating-a-resource"></a>

Setelah membuat kunci dan mengonfigurasi kebijakan kunci, Anda dapat menentukan kunci saat membuat sumber daya AWS DevOps Agen.

#### Konsol
<a name="console"></a>

Untuk mengonfigurasi kunci terkelola pelanggan saat membuat Ruang Agen di konsol:

1. Buka konsol AWS DevOps Agen.

1. Pilih **Buat Ruang Agen** atau **Daftar Layanan**.

1. Masukkan detail ruang agen (nama, deskripsi, dan peran IAM).

1. Perluas bagian **Konfigurasi Lanjutan**.

1. Di bawah **Jenis kunci enkripsi**, pilih **Kunci terkelola pelanggan**.

1. Pilih kunci KMS dari daftar dropdown, atau masukkan ARN kunci KMS.

1. Tinjau kebijakan kunci yang ditampilkan di bagian **Kebijakan kunci** yang dapat diperluas. Pastikan bahwa Anda telah melampirkan kebijakan ini ke kunci KMS Anda. Anda dapat menggunakan tombol salin untuk menyalin kebijakan.

1. Selesaikan konfigurasi yang tersisa dan pilih **Buat**.

**catatan**  
**Jika Anda tidak melihat kunci KMS Anda di daftar dropdown, verifikasi bahwa kunci tersebut memenuhi persyaratan di [Langkah 1](#step-1-create-a-customer-managed-key) dan yang Anda miliki `kms:ListKeys` dan izin. `kms:DescribeKey`

#### API
<a name="api"></a>

##### Membuat Ruang Agen dengan kunci yang dikelola pelanggan
<a name="creating-an-agent-space-with-a-customer-managed-key"></a>

Tentukan `kmsKeyArn` parameter saat membuat ruang agen. Nilai harus berupa ARN kunci KMS penuh.

```
{
  "name": "my-agent-space",
  "description": "An encrypted agent space",
  "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
```

##### Mendaftarkan Layanan dengan kunci yang dikelola pelanggan
<a name="registering-a-service-with-a-customer-managed-key"></a>

Tentukan `kmsKeyArn` parameter saat mendaftarkan layanan. Nilai harus berupa ARN kunci KMS penuh. Parameter ini didukung di semua jenis layanan, termasuk Dynatrace,,,, ServiceNow, PagerDuty GitLab GitHub, dan Server MCP.

```
{
  "service": "dynatrace",
  "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "serviceDetails": { ... }
}
```

**catatan**  
**Anda harus menentukan kunci yang dikelola pelanggan pada waktu pembuatan sumber daya. Anda tidak dapat menambahkan atau mengubah kunci terkelola pelanggan untuk sumber daya yang ada.

## AWS DevOps Konteks enkripsi agen
<a name="aws-devops-agent-encryption-context"></a>

[Konteks enkripsi](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) adalah sekumpulan pasangan nilai kunci non-rahasia yang berisi informasi kontekstual tambahan tentang data. AWS KMS menggunakan konteks enkripsi sebagai [data otentikasi tambahan untuk mendukung enkripsi yang diautentikasi](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad). Saat Anda menyertakan konteks enkripsi dalam permintaan untuk mengenkripsi data, AWS KMS mengikat konteks enkripsi ke data terenkripsi. Untuk mendekripsi data, Anda harus menyertakan konteks enkripsi yang sama dalam permintaan.

AWS DevOps Agen menggunakan konteks enkripsi berikut pada semua operasi kriptografi:

```
{
  "aws-crypto-ec:aws:aidevops:arn": "arn:aws:aidevops:{region}:{accountId}:{resourceType}/{resourceId}"
}
```

Nilai konteks enkripsi adalah ARN dari sumber daya AWS DevOps Agen yang dienkripsi. Anda dapat menggunakan konteks enkripsi ini dalam kondisi kebijakan utama Anda dan di AWS CloudTrail log untuk mengaudit bagaimana kunci Anda digunakan.

## Manajemen kunci
<a name="key-management"></a>

Jika Anda menonaktifkan atau menjadwalkan penghapusan kunci KMS Anda, AWS DevOps Agen tidak dapat mendekripsi data Anda. Ini menghasilkan `AccessDeniedException` kesalahan pada operasi yang membaca data terenkripsi.

**penting**  
**Jika Anda memilih untuk menggunakan kunci yang dikelola pelanggan, Anda bertanggung jawab untuk mengelola kunci dan izinnya. Jika kunci dinonaktifkan atau dihapus, atau jika AWS DevOps Agen kehilangan izin untuk menggunakan kunci, Anda kehilangan akses ke data terenkripsi.

Tabel berikut menjelaskan skenario kegagalan umum:


| Tindakan | Dampak | 
| --- | --- | 
| Izin kebijakan utama dicabut | AccessDeniedExceptionpada operasi enkripsi dan dekripsi | 
| Kunci KMS dinonaktifkan | DisabledExceptionpada operasi enkripsi dan dekripsi | 
| Kunci KMS dijadwalkan untuk dihapus | KMSInvalidStateExceptionpada operasi enkripsi dan dekripsi | 
| Kunci KMS dihapus | Kehilangan data permanen — data terenkripsi tidak dapat dipulihkan | 

Sebelum menonaktifkan atau menghapus kunci:

1. Verifikasi bahwa tidak ada sumber daya AWS DevOps Agen aktif yang bergantung pada kuncinya.

1. Pertimbangkan untuk menonaktifkan kunci terlebih dahulu untuk menguji dampaknya sebelum menjadwalkan penghapusan.

1. AWS KMS memberlakukan masa tunggu minimum sebelum penghapusan kunci, memberi Anda waktu untuk membatalkan jika diperlukan.

**Catatan:**: AWS DevOps Agen tidak secara otomatis mengenkripsi ulang data di bawah kunci baru. Jika Anda perlu memutar ke kunci yang dikelola pelanggan baru, Anda harus membuat sumber daya baru dengan kunci baru.

## Memantau kunci enkripsi Anda
<a name="monitoring-your-encryption-keys"></a>

Saat Anda menggunakan kunci yang dikelola pelanggan dengan AWS DevOps Agen, Anda dapat menggunakannya [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)untuk melacak permintaan yang dikirim AWS DevOps Agen ke AWS KMS.

Anda dapat memfilter CloudTrail acara berdasarkan:
+ **Sumber acara** - `kms.amazonaws.com`
+ **Kunci konteks enkripsi** - `aws-crypto-ec:aws:aidevops:arn`
+ **ARN Kunci — ARN** kunci yang dikelola pelanggan Anda dalam parameter permintaan

Untuk informasi selengkapnya, lihat [Mencatat panggilan API AWS KMS AWS CloudTrail](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html) di *Panduan Pengembang Layanan Manajemen AWS Kunci*.

# VPC Endpoint (AWS PrivateLink)
<a name="aws-devops-agent-security-vpc-endpoints-aws-privatelink"></a>

Anda dapat menggunakan AWS PrivateLink untuk membuat koneksi pribadi antara VPC dan AWS DevOps Agen Anda. Anda dapat mengakses AWS DevOps Agen seolah-olah berada di VPC Anda, tanpa menggunakan gateway internet, perangkat NAT, koneksi VPN, atau koneksi Direct Connect. Instans di VPC Anda tidak memerlukan alamat IP publik untuk AWS DevOps mengakses Agen.

Anda membuat koneksi pribadi ini dengan membuat titik akhir antarmuka, yang didukung oleh AWS PrivateLink. Kami membuat antarmuka jaringan endpoint di setiap subnet yang Anda aktifkan untuk titik akhir antarmuka. Ini adalah antarmuka jaringan yang dikelola pemohon yang berfungsi sebagai titik masuk untuk lalu lintas yang ditujukan untuk Agen. AWS DevOps 

Untuk informasi selengkapnya, lihat [Akses AWS layanan melalui AWS PrivateLink AWS](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) *PrivateLink Panduan*.

## Pertimbangan untuk titik akhir AWS DevOps Agen VPC
<a name="considerations-for-aws-devops-agent-vpc-endpoints"></a>

*Sebelum Anda menyiapkan titik akhir antarmuka untuk AWS DevOps Agen, tinjau [Pertimbangan](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#considerations-interface-endpoints) dalam Panduan.AWS PrivateLink *

AWS DevOps Agen mendukung melakukan panggilan API melalui titik akhir VPC berikut.


| Kategori | Sufiks titik akhir | 
| --- | --- | 
| AWS DevOps Tindakan API Pesawat Kontrol Agen | aidevops | 
| AWS DevOps Operasi Runtime Agen | aidevops-dataplane | 
| AWS DevOps Acara Agen Webhook | event-ai | 

## Buat titik akhir antarmuka untuk Agen AWS DevOps
<a name="create-an-interface-endpoint-for-aws-devops-agent"></a>

Anda dapat membuat titik akhir antarmuka untuk AWS DevOps Agen menggunakan konsol Amazon VPC atau Antarmuka Baris AWS Perintah (AWS CLI). Untuk informasi selengkapnya, lihat [Membuat titik akhir antarmuka](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) di *AWS PrivateLink Panduan*.

Buat titik akhir antarmuka untuk AWS DevOps Agen menggunakan nama layanan berikut:
+ com.amazonaws. \$1wilayah\$1 .aidevops
+ com.amazonaws. \$1wilayah\$1 .aidevops-dataplane
+ com.amazonaws. \$1wilayah\$1 .event-ai

Setelah Anda membuat titik akhir, Anda memiliki opsi untuk mengaktifkan nama host DNS pribadi. Aktifkan pengaturan ini dengan memilih **Aktifkan Nama DNS privat** di konsol VPC saat Anda membuat VPC endpoint.

Jika Anda mengaktifkan DNS pribadi untuk titik akhir antarmuka, Anda dapat membuat permintaan API ke AWS DevOps Agen menggunakan nama DNS Regional defaultnya. Contoh berikut menunjukkan format nama DNS Regional default.
+ aidevops. \$1wilayah\$1 .api.aws
+ aidevops-dataplane. \$1wilayah\$1 .amazonaws.com
+ acara-ai. \$1wilayah\$1 .api.aws

## Buat kebijakan titik akhir untuk titik akhir antarmuka Anda
<a name="create-an-endpoint-policy-for-your-interface-endpoint"></a>

Kebijakan endpoint adalah sumber daya IAM yang dapat Anda lampirkan ke titik akhir antarmuka. Kebijakan endpoint default memungkinkan akses penuh ke AWS DevOps Agen melalui titik akhir antarmuka. Untuk mengontrol akses yang diizinkan ke AWS DevOps Agen dari VPC Anda, lampirkan kebijakan titik akhir kustom ke titik akhir antarmuka.

 kebijakan titik akhir mencantumkan informasi berikut:
+ Prinsipal yang dapat melakukan tindakan (AWS akun, pengguna IAM, dan peran IAM).
+ Tindakan yang dapat dilakukan.
+ Sumber daya untuk melakukan tindakan.

Untuk informasi selengkapnya, lihat [Mengontrol akses ke layanan menggunakan kebijakan titik akhir](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) di *Panduan AWS PrivateLink *.