

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サービスアカウント (IRSA) の IAM ロールで AWS シークレットと設定プロバイダー CSI を使用する
<a name="integrating_ascp_irsa"></a>

**Topics**
+ [前提条件](#prerequisites)
+ [アクセス制御を設定する](#integrating_ascp_irsa_access)
+ [マウントするシークレットを特定する](#integrating_ascp_irsa_mount)
+ [トラブルシューティング](#integrating_ascp_irsa_trouble)

## 前提条件
<a name="prerequisites"></a>
+ Amazon EKS クラスター (バージョン 1.17 以降)
+ を介した AWS CLI および Amazon EKS クラスターへのアクセス `kubectl`

## アクセス制御を設定する
<a name="integrating_ascp_irsa_access"></a>

ASCP は Amazon EKS Pod Identity を取得し、IAM ロールと交換します。その IAM ロールの IAM ポリシーでアクセス許可を設定します。ASCP が IAM ロールを引き受けると、認証されたシークレットへのアクセス許可が付与されます。他のコンテナは、IAM ロールに関連付けられていない限り、シークレットにアクセスできません。

**Amazon EKS ポッドに Secrets Manager のシークレットへのアクセスを許可するには**

1. ポッドがアクセスする必要があるシークレットに `secretsmanager:GetSecretValue` と `secretsmanager:DescribeSecret` のアクセス許可を付与するアクセス許可ポリシーを作成します。ポリシーの例については「[例: 個々のシークレットを読み、記述するアクセス許可](auth-and-access_iam-policies.md#auth-and-access_examples-read-and-describe)」を参照してください。

1. クラスター用に IAM OpenID Connect (OIDC) プロバイダーがない場合は作成します。詳細については、「*Amazon EKS ユーザーガイド*」の「[クラスターに IAM OIDC プロバイダーを作成する](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)」を参照してください。

1. [サービスアカウントの IAM ロール](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)を作成して、ポリシーをアタッチします。詳細については、「*Amazon EKS ユーザーガイド*」の「[サービスアカウントの IAM ロールを作成する](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)」を参照してください。

1. プライベート Amazon EKS クラスターを使用する場合は、クラスターがある VPC に AWS STS エンドポイントがあることを確認してください。エンドポイントの作成の詳細については、「*AWS Identity and Access Management ユーザーガイド*」の「[インターフェイス VPC エンドポイント](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_interface_vpc_endpoints.html)」を参照してください。

## マウントするシークレットを特定する
<a name="integrating_ascp_irsa_mount"></a>

ASCP が (ファイルシステム上のファイルとして) Amazon EKS 内にマウントするシークレットを判別するには、[SecretProviderClass](ascp-examples.md#ascp-examples-secretproviderclass) YAML ファイルを作成します。`SecretProviderClass` では、マウントするシークレットと、それらのマウントに使用されるファイル名がリストされます。`SecretProviderClass` は、参照する Amazon EKS ポッドと同じ名前空間にある必要があります。

### シークレットをファイルとしてマウントする
<a name="mount-secrets"></a>

次の手順は、サンプル YAML ファイル ([ExampleSecretProviderClass.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleSecretProviderClass-IRSA.yaml) と [ExampleDeployment.yaml](https://github.com/aws/secrets-store-csi-driver-provider-aws/blob/main/examples/ExampleDeployment-IRSA.yaml)) を使用してシークレットをファイルとしてマウントする方法を示します。

**Amazon EKS でシークレットをマウントするには**

1. `SecretProviderClass` をポッドに適用します。

   ```
   kubectl apply -f ExampleSecretProviderClass.yaml
   ```

1. ポッドをデプロイします。

   ```
   kubectl apply -f ExampleDeployment.yaml
   ```

1. ASCP はファイルをマウントします。

## トラブルシューティング
<a name="integrating_ascp_irsa_trouble"></a>

ポッドのデプロイを記述すると、ほとんどのエラーを表示できます。

**コンテナのエラーメッセージを表示するには**

1. 次のコマンドで、ポッド名のリストを取得します。デフォルトの名前空間を使用していない場合は、`-n nameSpace` を使用してください。

   ```
   kubectl get pods
   ```

1. ポッドを記述するには、次のコマンドで、前のステップで見つけたポッドの ポッド ID を使用します (*podId* の場合)。デフォルトの名前空間を使用していない場合は、`-n nameSpace` を使用してください。

   ```
   kubectl describe pod/podId
   ```

**ASCP のエラーを表示するには**
+ プロバイダーログで詳細情報を検索するには、次のコマンドの *podId* に、*csi-secrets-store-provider-aws* ポッドの ID を入力します。

  ```
  kubectl -n kube-system get pods
  kubectl -n kube-system logs Pod/podId
  ```
+ 

**`SecretProviderClass` CRD がインストールされていることを確認します。**

  ```
  kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io
  ```

  このコマンドは、`SecretProviderClass` カスタムリソース定義に関する情報を返します。
+ 

**SecretProviderClass オブジェクトが作成されたことを確認します。**

  ```
  kubectl get secretproviderclass SecretProviderClassName -o yaml
  ```