

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# Amazon Redshift でのサービスにリンクされたロールの使用
<a name="using-service-linked-roles"></a>

Amazon Redshift は、AWS Identity and Access Management (IAM) [サービスにリンクされたロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)を使用しています。サービスにリンクされたロールは、Amazon Redshift に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、Amazon Redshift によって事前定義されており、サービスがお客様の Amazon Redshift クラスターの代わりに AWS のサービスを呼び出すのに必要なアクセス許可がすべて含まれています。

サービスにリンクされたロールを使用することで、必要なアクセス許可を手動で追加する必要がなくなるため、Amazon Redshift の設定が簡単になります。このロールは、Amazon Redshift ユースケースにリンクされており、事前定義されたアクセス許可があります。Amazon Redshift のみがロールを引き受けることができ、サービスにリンクされたロールのみが事前定義されたアクセス権限のポリシーを使用できます。Amazon Redshift は、クラスターまたは Redshift マネージド VPC エンドポイントの初回作成時に、サービスリンクロールをアカウントに作成します。このサービスリンクロールは、アカウントで Amazon Redshift クラスターや Redshit マネージド VPC エンドポイントをすべて削除した後でのみ削除できます。これにより、Amazon Redshift リソースへの必要なアクセス許可を不注意に削除することがなくなり、リソースが保護されます。

Amazon Redshift では、これが利用可能なすべてのリージョンにおいて、サービスにリンクされたロールの使用がサポートされています。詳細については、 [AWS リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html?id=docs_gateway#redshift_region)を参照してください。

サービスリンクロールをサポートする他のサービスについては、「[IAM と連携する AWS サービス](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)」ページで、**[サービスリンクロール]** 列が **[はい]** になっているサービスを参照してください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、 **はい** リンクを選択します。

## Amazon Redshift へのサービスにリンクされたロールのアクセス許可
<a name="service-linked-role-permissions"></a>

Amazon Redshift が **AWSServiceRoleForRedshift** という名前のサービスにリンクされたロールを使用 – Amazon Redshift がユーザーに代わって AWS のサービスを呼び出すことを許可します。このサービスリンクロールは、マネージドポリシー `AmazonRedshiftServiceLinkedRolePolicy` にアタッチされます。このポリシーの更新情報については、「[Amazon Redshift の AWS 管理 (事前定義) ポリシー](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.managed-policies)」を参照してください。

AWSServiceRoleForRedshift サービスにリンクされたロールは、 **redshift.amazonaws.com** のみを信頼し、ロールを引き受けます。

AWSServiceRoleForRedshift サービスにリンクされたロールのアクセス権限ポリシーでは、Amazon Redshift はすべての関連リソースで以下のことを実行することができます。
+ `ec2:DescribeVpcs `
+ `ec2:DescribeSubnets `
+ `ec2:DescribeNetworkInterfaces `
+ `ec2:DescribeAddress `
+ `ec2:AssociateAddress `
+ `ec2:DisassociateAddress `
+ `ec2:CreateNetworkInterface `
+ `ec2:DeleteNetworkInterface `
+ `ec2:ModifyNetworkInterfaceAttribute`
+ `ec2:CreateVpcEndpoint`
+ `ec2:DeleteVpcEndpoints`
+ `ec2:DescribeVpcEndpoints`
+ `ec2:ModifyVpcEndpoint`
+ `ec2:DescribeVpcAttribute`
+ `ec2:DescribeSecurityGroups`
+ `ec2:DescribeInternetGateways`
+ `ec2:DescribeSecurityGroupRules`
+ `ec2:DescribeAvailabilityZones`
+ `ec2:DescribeNetworkAcls`
+ `ec2:DescribeRouteTables`
+ `ec2:AssignIpv6Addresses`
+ `ec2:UnassignIpv6Addresses`

**ネットワークリソースに対するアクセス許可**

次のアクセス許可では、セキュリティグループルールを作成して管理するためのアクションを Amazon EC2 で実行できます。これらのセキュリティグループおよびルールは、Amazon Redshift `aws:RequestTag/Redshift` のリソースタグに厳密に関連付けられています。これにより、アクセス許可の範囲は特定の Amazon Redshift のリソースに制限されます。
+ `ec2:CreateSecurityGroup`
+ `ec2:AuthorizeSecurityGroupEgress`
+ `ec2:AuthorizeSecurityGroupIngress`
+ `ec2:RevokeSecurityGroupEgress`
+ `ec2:RevokeSecurityGroupIngress`
+ `ec2:ModifySecurityGroupRules`
+ `ec2:DeleteSecurityGroup`

**Service Quotas のアクセス許可**

次のアクセス許可により、呼び出し元は Service Quotas を取得できます。

`servicequotas:GetServiceQuota`

次の JSON フラグメントは、Service Quotas のアクションとリソーススコープを示しています。

```
{
   "Sid": "ServiceQuotasToCheckCustomerLimits",
   "Effect": "Allow",
   "Action": [
      "servicequotas:GetServiceQuota"
   ],
   "Resource": [
      "arn:aws:servicequotas:*:*:ec2/L-0263D0A3",
      "arn:aws:servicequotas:*:*:vpc/L-29B6F2EB" 
   ]
}
```

クォータコードは次のとおりです。
+ *L-0263D0A3* – EC2-VPC Elastic IP のクォータコード。
+ *L-29B6F2EB* – VPC あたりのインターフェイス VPC エンドポイントのクォータコード。

詳細については、「[AWS サービスクォータ](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)」を参照してください。

**監査ログ記録のためのアクション**

`logs` プレフィックスとともにリストされたアクションは、監査ログ記録と関連機能と関係があります。具体的には、ロググループとログストリームの作成と管理に関連します。
+ `logs:CreateLogGroup`
+ `logs:PutRetentionPolicy`
+ `logs:CreateLogStream`
+ `logs:PutLogEvents`
+ `logs:DescribeLogStreams`
+ `logs:GetLogEvents`

次の JSON は、監査ログ記録用の Amazon Redshift に対する、アクションとリソースの範囲を示しています。

```
[
    {
        "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogGroups",
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogGroup",
            "logs:PutRetentionPolicy"
        ],
        "Resource": [
            "arn:aws:logs:*:*:log-group:/aws/redshift/*"
        ]
    },
    {
        "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogStreams",
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogStream",
            "logs:PutLogEvents",
            "logs:DescribeLogStreams",
            "logs:GetLogEvents"
        ],
        "Resource": [
            "arn:aws:logs:*:*:log-group:/aws/redshift/*:log-stream:*"
        ]
    }
]
```

サービスリンクロールと、AWS での用途については、「[サービスにリンクされたロールの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html)」を参照してください。Amazon Redshift での特定のアクション、およびその他の IAM リソースの詳細については、「[Amazon Redshift のアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonredshift.html)」を参照してください。

** を使用して管理者認証情報を管理するためのアクションAWS Secrets Manager**

`secretsmanager` プレフィックス付きでリストされているアクションは、Amazon Redshift を使用して管理者認証情報を管理するためのものです。このようなアクションを実行すると、Amazon Redshift は AWS Secrets Manager を使用して、管理者認証情報シークレットの作成と管理を行います。

次の JSON は、AWS Secrets Manager で管理者認証情報を管理するための Amazon Redshift に対するアクションとリソースの範囲を示しています。

```
[
    {
        "Effect": "Allow",
        "Action": [
            "secretsmanager:DescribeSecret",
            "secretsmanager:DeleteSecret",
            "secretsmanager:PutSecretValue",
            "secretsmanager:UpdateSecret",
            "secretsmanager:UpdateSecretVersionStage",
            "secretsmanager:RotateSecret"
        ],
        "Resource": [
            "arn:aws:secretsmanager:*:*:secret:redshift!*"
        ],
        "Condition": {
            "StringEquals": {
                "secretsmanager:ResourceTag/aws:secretsmanager:owningService": "redshift"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetRandomPassword"
        ],
        "Resource": "*"
    }
]
```

**クラスターとサーバーレス名前空間を AWS Glue Data Catalog に登録するためのアクション**

`glue` というプレフィックスが付いたアクションは、プロビジョニング済みクラスターまたはサーバーレス名前空間の登録を通じて AWS Glue Data Catalog に作成されたカタログへのアクセスに関連しています。詳細については、「*Amazon Redshift Database デベロッパーガイド*」の「[Apache Iceberg の Amazon Redshift との互換性](https://docs.aws.amazon.com/redshift/latest/dg/iceberg-integration_overview.html)」を参照してください。

次の JSON は、Amazon Redshift に対する、AWS Glue Data Catalog のカタログへのアクセスに関するアクションとリソースの範囲を示しています。

```
[
    {
        "Sid": "DiscoverRedshiftCatalogs",
        "Effect": "Allow",
        "Action": [
            "glue:GetCatalogs",
            "glue:GetCatalog"
        ],
        "Resource": [
            "arn:aws:glue:*:*:catalog",
            "arn:aws:glue:*:*:catalog/*"
        ], 
   "Condition": 
    { 
        "Bool": 
        { 
            "glue:EnabledForRedshiftAutoDiscovery": "true"
        },
        "StringEquals": {
             "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
    } 
 }, 
 {
    "Sid": "LakeFormationGetMetadataAccessForFederatedCatalogs",
    "Effect": "Allow", 
    "Action": [ 
        "lakeformation:GetDataAccess"
    ], 
    "Resource": [ "*" ], 
    "Condition": 
    { 
        "Bool": 
        {
            "lakeformation:EnabledOnlyForMetaDataAccess":"true"
        },
        "StringEquals": {
             "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "ForAnyValue:StringEquals": 
        { 
            "aws:CalledVia": "glue.amazonaws.com"
        } 
    }
 }
    }
]
```

`glue:GetCatalog` および `glue:GetCatalogs` アクセス許可には条件 `glue:EnabledForRedshiftAutoDiscovery:true` があり、Amazon Redshift はカタログを自動的に検出するための IAM アクセスを付与します。オプトアウトするには、AWS Glue アカウントレベルのリソースポリシーを追加して、サービスにリンクされたロールのカタログへのアクセスを選択的に拒否します。サービスリンクロールにはポリシーに明示的な許可アクションがすでにあるため、オプトアウトポリシーはそのアクションを明示的に拒否する必要があります。追加のポリシーが Amazon Redshift の自動検出を拒否する次の例を考えてみましょう。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : {
            "Effect": "Deny",
            "Action": [
                "glue:GetCatalog",
                "glue:GetCatalogs"
            ],
            "Principal" : {
            "AWS" : "arn:aws:iam::111122223333:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift"
            },
            "Resource": [
                "arn:aws:glue:*:*:catalog/<s3_table_catalog_name>",
                "arn:aws:glue:*:*:catalog/<s3_table_catalog_name>/*"
            ]
        }
}
```

------

**IAM エンティティが AWSServiceRoleForRedshift サービスにリンクされたロールを作成するには**

```
{
    "Effect": "Allow",
    "Action": [
        "iam:CreateServiceLinkedRole"      
    ],
    "Resource": "arn:aws:iam::<AWS-account-ID>:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift",
    "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}}
}
```

**IAM エンティティが AWSServiceRoleForRedshift サービスにリンクされたロールを削除するには**

以下のポリシーステートメントを IAM エンティティのアクセス許可に追加します。

```
{
    "Effect": "Allow",
    "Action": [
        "iam:DeleteServiceLinkedRole",
        "iam:GetServiceLinkedRoleDeletionStatus"
    ],
    "Resource": "arn:aws:iam::<AWS-account-ID>:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift",
    "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}}
}
```

または AWS 管理ポリシーを使用して、Amazon Redshift への [フルアクセスを許可](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AmazonRedshiftFullAccess) することもできます。

## Amazon Redshift のサービスにリンクされたロールの作成
<a name="create-service-linked-role"></a>

AWSServiceRoleForRedshift サービスにリンクされたロールを手動で作成する必要はありません。Amazon Redshift は、お客様のサービスにリンクされたロールを作成します。AWSServiceRoleForRedshift サービスにリンクされたロールがアカウントより削除されている場合は、新しい Amazon Redshift クラスターを起動すると、Amazon Redshift によってロールが作成されます。

**重要**  
2017 年 9 月 18 日より前に Amazon Redshift サービスを使用していた場合、サービスにリンクされたロールのサポートが開始された時点で、Amazon Redshift により AWSServiceRoleForRedshift ロールがアカウントに作成済されています。詳細については[IAM アカウントに新しいロールが表示される](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)を参照してください。

## Amazon Redshift のサービスにリンクされたロールの編集
<a name="edit-service-linked-role"></a>

Amazon Redshift では、サービスにリンクされたロールである AWSServiceRoleForRedshift を編集できません。サービスにリンクされたロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、ロールの説明は IAM コンソール、AWS Command Line Interface (AWS CLI)、または IAM API を使用して編集することができます。詳細については、 *IAM ユーザーガイド*の [ロールの変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) を参照してください。

## Amazon Redshift のサービスにリンクされたロールの削除
<a name="delete-service-linked-role"></a>

サービスにリンクされたロールが必要な機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。

アカウントのサービスにリンクされたロールを削除するには、アカウントのクラスターをシャットダウンした上で削除する必要があります。詳細については、「[クラスターのシャットダウンと削除](rs-mgmt-shutdown-delete-cluster.md)」を参照してください。

サービスにリンクされたロールは、IAM コンソール、AWS CLI、 IAM API を使用して削除することができます。詳細については、「*IAM ユーザーガイド*」の「[サービスにリンクされたロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)」を参照してください。