

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Kebijakan IAM untuk Amazon Redshift Spectrum
<a name="c-spectrum-iam-policies"></a>

Topik ini menjelaskan izin IAM yang diperlukan untuk menggunakan Redshift Spectrum.

Secara default, Amazon Redshift Spectrum menggunakan AWS Glue Data Catalog AWS di Wilayah yang AWS Glue mendukung. Di AWS Wilayah lain, Redshift Spectrum menggunakan Katalog Data Athena. Cluster Anda memerlukan otorisasi untuk mengakses katalog data eksternal Anda di AWS Glue atau Athena dan file data Anda di Amazon S3. Anda memberikan otorisasi tersebut dengan mereferensikan peran AWS Identity and Access Management (IAM) yang dilampirkan ke klaster Anda. Jika Anda menggunakan metastore Apache Hive untuk mengelola katalog data Anda, Anda tidak perlu menyediakan akses ke Athena.

Anda dapat merantai peran sehingga klaster Anda dapat mengambil peran lain yang tidak melekat pada klaster. Untuk informasi selengkapnya, lihat [Merantai peran IAM dalam Amazon Redshift Spectrum](#c-spectrum-chaining-roles).

 AWS Glue Katalog yang Anda akses mungkin dienkripsi untuk meningkatkan keamanan. Jika AWS Glue katalog dienkripsi, Anda memerlukan AWS KMS kunci AWS Glue untuk mengakses Katalog AWS Glue Data. Untuk informasi selengkapnya, lihat [Mengenkripsi Katalog AWS Glue Data Anda](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html) di Panduan *[AWS Glue Pengembang](https://docs.aws.amazon.com/glue/latest/dg/)*.

**Topics**
+ [Izin Amazon S3](#spectrum-iam-policies-s3)
+ [Izin Amazon S3 lintas akun](#spectrum-iam-policies-cross-account)
+ [Kebijakan untuk memberikan atau membatasi akses menggunakan Redshift Spectrum](#spectrum-iam-policies-spectrum-only)
+ [Kebijakan untuk memberikan izin minimum](#spectrum-iam-policies-minimum-permissions)
+ [Merantai peran IAM dalam Amazon Redshift Spectrum](#c-spectrum-chaining-roles)
+ [Mengontrol akses ke Katalog AWS Glue Data](#c-spectrum-glue-acess)

## Izin Amazon S3
<a name="spectrum-iam-policies-s3"></a>

Minimal, klaster Anda membutuhkan akses GET dan LIST ke bucket Amazon S3 Anda. Jika bucket Anda tidak berada di AWS akun yang sama dengan cluster Anda, bucket Anda juga harus mengotorisasi klaster Anda untuk mengakses data. Untuk informasi selengkapnya, lihat [Mengotorisasi Amazon Redshift untuk Mengakses Layanan AWS Lain atas Nama](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html) Anda. 

**catatan**  
Bucket Amazon S3 tidak dapat menggunakan kebijakan bucket yang membatasi akses hanya dari titik akhir VPC tertentu.

Kebijakan berikut memberikan akses GET dan LIST ke bucket Amazon S3 apa pun. Kebijakan ini memungkinkan akses ke bucket Amazon S3 untuk Redshift Spectrum serta operasi COPY.

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

****  

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

------

Kebijakan berikut memberikan akses GET dan LIST ke bucket Amazon S3 Anda yang diberi nama. `amzn-s3-demo-bucket`

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [{
		"Effect": "Allow",
		"Action": ["s3:Get*", "s3:List*"],
		"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
	}]
}
```

------

## Izin Amazon S3 lintas akun
<a name="spectrum-iam-policies-cross-account"></a>

Untuk memberikan izin Redshift Spectrum untuk mengakses data di bucket Amazon S3 milik akun AWS lain, tambahkan kebijakan berikut ke bucket Amazon S3. Untuk informasi selengkapnya, lihat [Memberikan Izin Bucket Lintas Akun](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Example permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/spectrumrole"
            },
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListMultipartUploadParts",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        }
    ]
}
```

------

## Kebijakan untuk memberikan atau membatasi akses menggunakan Redshift Spectrum
<a name="spectrum-iam-policies-spectrum-only"></a>

Kebijakan contoh berikut memungkinkan akses ke bucket Amazon S3 untuk Amazon Redshift. Saat menambahkan kebijakan ini ke peran IAM, sebaiknya gunakan peran IAM yang hanya digunakan untuk Amazon Redshift. Kami juga menyarankan agar Anda tidak menggunakan kembali peran yang ada atau menambahkan izin tambahan ke peran IAM ini.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucketVersions",
                "s3:ListBucket"
            ],
            "Resource": [ 
                "arn:aws:s3:::amzn-s3-demo-bucket", 
                "arn:aws:s3:::amzn-s3-demo-bucket/*" 
            ]
        }
    ]
}
```

------

## Kebijakan untuk memberikan izin minimum
<a name="spectrum-iam-policies-minimum-permissions"></a>

Kebijakan berikut memberikan izin minimum yang diperlukan untuk menggunakan Redshift Spectrum dengan Amazon S3,, dan Athena. AWS Glue

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname", 
                "arn:aws:s3:::bucketname/folder1/folder2/*" 
             ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateDatabase",
                "glue:DeleteDatabase",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:UpdateDatabase",
                "glue:CreateTable",
                "glue:DeleteTable",
                "glue:BatchDeleteTable",
                "glue:UpdateTable",
                "glue:GetTable",
                "glue:GetTables",
                "glue:BatchCreatePartition",
                "glue:CreatePartition",
                "glue:DeletePartition",
                "glue:BatchDeletePartition",
                "glue:UpdatePartition",
                "glue:GetPartition",
                "glue:GetPartitions",
                "glue:BatchGetPartition"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Jika Anda menggunakan Athena untuk katalog data Anda AWS Glue, kebijakan tersebut memerlukan akses Athena penuh. Kebijakan berikut memberikan akses ke sumber daya Athena. Jika database eksternal Anda berada di metastore Hive, Anda tidak memerlukan akses Athena.

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

****  

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

------

## Merantai peran IAM dalam Amazon Redshift Spectrum
<a name="c-spectrum-chaining-roles"></a>

Saat Anda melampirkan peran ke klaster, klaster Anda dapat mengambil peran tersebut untuk mengakses Amazon S3, Athena, dan AWS Glue atas nama Anda. Jika peran yang dilampirkan ke klaster Anda tidak memiliki akses ke sumber daya yang diperlukan, Anda dapat merantai peran lain, mungkin milik akun lain. Cluster Anda kemudian sementara mengasumsikan peran berantai untuk mengakses data. Anda juga dapat memberikan akses lintas akun dengan merantai peran. Anda dapat merantai maksimal 10 peran. Setiap peran dalam rantai mengasumsikan peran berikutnya dalam rantai, sampai cluster mengambil peran di akhir rantai. 

Untuk peran rantai, Anda membangun hubungan kepercayaan antara peran. Peran yang mengasumsikan peran lain harus memiliki kebijakan izin yang memungkinkannya mengambil peran yang ditentukan. Pada gilirannya, peran yang melewati izin harus memiliki kebijakan kepercayaan yang memungkinkannya meneruskan izinnya ke peran lain. Untuk informasi selengkapnya, lihat [Merantai Peran IAM di Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html#authorizing-redshift-service-chaining-roles). 

Saat menjalankan perintah CREATE EXTERNAL SCHEMA, Anda dapat merantai peran dengan menyertakan daftar peran yang dipisahkan koma. ARNs 

**catatan**  
Daftar peran yang dirantai tidak boleh menyertakan spasi.

Dalam contoh berikut, `MyRedshiftRole` melekat pada cluster. `MyRedshiftRole`mengasumsikan peran`AcmeData`, yang menjadi milik akun`111122223333`.

```
create external schema acme from data catalog 
database 'acmedb' region 'us-west-2' 
iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole,arn:aws:iam::111122223333:role/AcmeData';
```

## Mengontrol akses ke Katalog AWS Glue Data
<a name="c-spectrum-glue-acess"></a>

Jika Anda menggunakan AWS Glue untuk katalog data Anda, Anda dapat menerapkan kontrol akses halus ke Katalog AWS Glue Data dengan kebijakan IAM Anda. Misalnya, Anda mungkin ingin mengekspos hanya beberapa database dan tabel ke peran IAM tertentu.

Bagian berikut menjelaskan kebijakan IAM untuk berbagai tingkat akses ke data yang disimpan dalam Katalog AWS Glue Data.

**Topics**
+ [Kebijakan untuk operasi basis data](#c-spectrum-glue-acess-database)
+ [Kebijakan untuk operasi tabel](#c-spectrum-glue-acess-tables)
+ [Kebijakan untuk operasi partisi](#c-spectrum-glue-acess-partitions)

### Kebijakan untuk operasi basis data
<a name="c-spectrum-glue-acess-database"></a>

Jika Anda ingin memberi pengguna izin untuk melihat dan membuat database, mereka memerlukan hak akses ke database dan Katalog AWS Glue Data.

Contoh query berikut membuat database.

```
CREATE EXTERNAL SCHEMA example_db
FROM DATA CATALOG DATABASE 'example_db' region 'us-west-2' 
IAM_ROLE 'arn:aws:iam::redshift-account:role/spectrumrole'
CREATE EXTERNAL DATABASE IF NOT EXISTS
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk membuat database.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabase",
                "glue:CreateDatabase"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:catalog"
            ]
        }
    ]
}
```

------

Contoh query berikut mencantumkan database saat ini.

```
SELECT * FROM SVV_EXTERNAL_DATABASES WHERE
databasename = 'example_db1' or databasename = 'example_db2';
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk membuat daftar database saat ini.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabases"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:database/example_db1",
                "arn:aws:glue:us-west-2:111122223333:database/example_db2",
                "arn:aws:glue:us-west-2:111122223333:catalog"
            ]
        }
    ]
}
```

------

### Kebijakan untuk operasi tabel
<a name="c-spectrum-glue-acess-tables"></a>

Jika Anda ingin memberi pengguna izin untuk melihat, membuat, menjatuhkan, mengubah, atau mengambil tindakan lain pada tabel, mereka memerlukan beberapa jenis akses. Mereka membutuhkan akses ke tabel itu sendiri, database tempat mereka berada, dan katalog.

Contoh query berikut membuat tabel eksternal.

```
CREATE EXTERNAL TABLE example_db.example_tbl0(
    col0 INT,
    col1 VARCHAR(255)
) PARTITIONED BY (part INT) STORED AS TEXTFILE
LOCATION 's3://test/s3/location/';
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk membuat tabel eksternal.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateTable"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0"
            ]
        }
    ]
}
```

------

Contoh berikut query masing-masing daftar tabel eksternal saat ini.

```
SELECT * FROM svv_external_tables
WHERE tablename = 'example_tbl0' OR
tablename = 'example_tbl1';
```

```
SELECT * FROM svv_external_columns
WHERE tablename = 'example_tbl0' OR
tablename = 'example_tbl1';
```

```
SELECT parameters FROM svv_external_tables
WHERE tablename = 'example_tbl0' OR
tablename = 'example_tbl1';
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk membuat daftar tabel eksternal saat ini.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetTables"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl1"
            ]
        }
    ]
}
```

------

Contoh query berikut mengubah tabel yang ada.

```
ALTER TABLE example_db.example_tbl0
SET TABLE PROPERTIES ('numRows' = '100');
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk mengubah tabel yang ada.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetTable",
                "glue:UpdateTable"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0"
            ]
        }
    ]
}
```

------

Contoh query berikut menjatuhkan tabel yang ada.

```
DROP TABLE example_db.example_tbl0;                       
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk menghapus tabel yang ada.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:DeleteTable"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0"
            ]
        }
    ]
}
```

------

### Kebijakan untuk operasi partisi
<a name="c-spectrum-glue-acess-partitions"></a>

Jika Anda ingin memberi pengguna izin untuk melakukan operasi tingkat partisi (melihat, membuat, menjatuhkan, mengubah, dan sebagainya), mereka memerlukan izin ke tabel yang menjadi milik partisi. Mereka juga memerlukan izin ke database terkait dan Katalog AWS Glue Data.

Contoh query berikut membuat partisi.

```
ALTER TABLE example_db.example_tbl0
ADD PARTITION (part=0) LOCATION 's3://test/s3/location/part=0/';
ALTER TABLE example_db.example_t
ADD PARTITION (part=1) LOCATION 's3://test/s3/location/part=1/';
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk membuat partisi.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetTable",
                "glue:BatchCreatePartition"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0"
            ]
        }
    ]
}
```

------

Contoh query berikut mencantumkan partisi saat ini.

```
SELECT * FROM svv_external_partitions
WHERE schemname = 'example_db' AND
tablename = 'example_tbl0'
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk membuat daftar partisi saat ini.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetPartitions",
                "glue:GetTables",
                "glue:GetTable"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0"
            ]
        }
    ]
}
```

------

Contoh query berikut mengubah partisi yang ada.

```
ALTER TABLE example_db.example_tbl0 PARTITION(part='0')
SET LOCATION 's3://test/s3/new/location/part=0/';
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk mengubah partisi yang ada.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetPartition",
                "glue:UpdatePartition"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0"
            ]
        }
    ]
}
```

------

Contoh query berikut menjatuhkan partisi yang ada.

```
ALTER TABLE example_db.example_tbl0 DROP PARTITION(part='0');               
```

Kebijakan IAM berikut memberikan izin minimum yang diperlukan untuk menjatuhkan partisi yang ada.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:DeletePartition"
            ],
            "Resource": [
                "arn:aws:glue:us-west-2:111122223333:catalog",
                "arn:aws:glue:us-west-2:111122223333:database/example_db",
                "arn:aws:glue:us-west-2:111122223333:table/example_db/example_tbl0"
            ]
        }
    ]
}
```

------