

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

# アイデンティティベースのポリシー
<a name="auth-and-access_iam-policies"></a>

アクセス許可ポリシーは [IAM アイデンティティ: ユーザー、ユーザーグループ、およびロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)にアタッチすることができます。アイデンティティベースのポリシーで、アイデンティティがアクセスできるシークレットと、アイデンティティがそのシークレットで実行できるアクションを指定します。詳細については、「[Adding and removing IAM identity permissions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」(IAM アクセス許可の追加と削除) を参照してください。

別のサービスのアプリケーションまたはユーザーを表すロールに権限を付与できます。例えば、Amazon EC2 インスタンスで実行されているアプリケーションは、データベースにアクセスする必要がある場合があります。EC2 インスタンスのプロファイルに IAM ロールを作成し、権限ポリシーを使用して、データベースの資格情報を含むシークレットへのアクセスをロールに付与することができます。詳細については、「[Using an IAM role to grant permissions to applications running on Amazon EC2 instances](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)」(IAMロールを使用してAmazon EC2インスタンス上で動作するアプリケーションに権限を付与する) を参照してください。その他、[Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/c-getting-started-using-spectrum.html)、[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-permissions.html)、[Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) などのサービスにもロールをアタッチすることができます。

また、IAM 以外のアイデンティティシステムによって認証されたユーザーにアクセス許可を付与することもできます。例えば、Amazon Cognito 使用してサインインするモバイルアプリケーションユーザーに IAM ロールを関連付けることができます。ロールは、ロールのアクセス許可ポリシーにあるアクセス許可を持つ、一時的な認証情報をアプリに付与します。次に、アクセス許可ポリシーを使用して、シークレットへのアクセス許可をロールに付与できます。詳細については、「[Identity providers and federation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html)」(ID プロバイダとフェデレーション) を参照してください。

アイデンティティベースのポリシーを使用して以下を行うことができます。
+ 複数のシークレットへのアクセスをアイデンティティに許可します。
+ 新しいシークレットを作成できるユーザーと、まだ作成されていないシークレットにアクセスできるユーザーを制御します。
+ IAM グループにシークレットへのアクセス許可を付与します。

**Topics**
+ [例: 個別のシークレット値を取得するためのアクセス許可](#auth-and-access_examples_identity_read)
+ [例: 個々のシークレットを読み、記述するアクセス許可](#auth-and-access_examples-read-and-describe)
+ [例: バッチでシークレット値のグループを取得するためのアクセス許可](#auth-and-access_examples_batch)
+ [例: ワイルドカード](#auth-and-access_examples_wildcard)
+ [例: シークレットを作成するアクセス許可](#auth-and-access_examples_create)
+ [例: シークレットを暗号化するための特定の AWS KMS キーを拒否する](#auth-and-access_examples_kmskey)

## 例: 個別のシークレット値を取得するためのアクセス許可
<a name="auth-and-access_examples_identity_read"></a>

シークレット値を取得するアクセス許可を付与するには、ポリシーをシークレットまたはアイデンティティにアタッチできます。使用するポリシーの種類を決定する方法については、「[アイデンティティベースのポリシーおよびリソースベースのポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)」を参照してください。ポリシーをアタッチする方法については、[リソースベースのポリシー](auth-and-access_resource-policies.md) および [アイデンティティベースのポリシー](#auth-and-access_iam-policies) を参照してください。

この例は、IAM グループにアクセス許可を付与する場合に役立てることができます。バッチ API コールでシークレットのグループを取得するためのアクセス許可を付与するには、「[例: バッチでシークレット値のグループを取得するためのアクセス許可](#auth-and-access_examples_batch)」を参照してください。

**Example カスタマーマネージドキーを使用して暗号化されたシークレットを読み込む**  
シークレットがカスタマーマネージドキーを使用して暗号化されている場合、ID に次のポリシーをアタッチすることで、シークレットの読み取りを許可できます。\$1    
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
{
  "Effect": "Allow",
  "Action": "secretsmanager:GetSecretValue",
  "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
},
{
  "Effect": "Allow",
  "Action": "kms:Decrypt",
  "Resource": "arn:aws:kms:us-east-1:123456789012:key/key-id"
}
]
}
```

## 例: 個々のシークレットを読み、記述するアクセス許可
<a name="auth-and-access_examples-read-and-describe"></a>

**Example 1 つのシークレットを読み、記述する**  
次のポリシーをアイデンティティにアタッチすると、シークレットへのアクセスを許可することができます。    
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
  {
    "Effect": "Allow",
    "Action": [
      "secretsmanager:GetSecretValue",
      "secretsmanager:DescribeSecret"
      ],
      "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-AbCdEf"
    }
]
}
```

## 例: バッチでシークレット値のグループを取得するためのアクセス許可
<a name="auth-and-access_examples_batch"></a>

**Example バッチ内のシークレットグループを読み取る**  
次のポリシーをアイデンティティにアタッチすると、バッチ API コールのシークレットのグループを取得するためのアクセス許可を付与できます。このポリシーは、バッチコールに他のシークレットが含まれていても、*SecretARN1*、*SecretARN2*、*SecretARN3* で指定されたシークレットのみを取得できるように呼び出し元を制限します。呼び出し元がバッチ API コールで他のシークレットもリクエストしたとしても、Secrets Manager はそれらを返しません。詳細については、「[https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_BatchGetSecretValue.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_BatchGetSecretValue.html)」を参照してください。    
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
{
  "Effect": "Allow",
  "Action": [
    "secretsmanager:BatchGetSecretValue",
    "secretsmanager:ListSecrets"
  ],
  "Resource": "*"
},
{
  "Effect": "Allow",
  "Action": [
    "secretsmanager:GetSecretValue"
  ],
  "Resource": [
    "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName1-AbCdEf",
    "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName2-AbCdEf",
    "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName3-AbCdEf"
    ]
}
]
}
```

## 例: ワイルドカード
<a name="auth-and-access_examples_wildcard"></a>

ワイルドカードを使用して、ポリシーの要素に値のセットを含めることができます。

**Example パス内のすべてのシークレットにアクセスする**  
次のポリシーは、「*TestEnv/*」で始まる名前が付いているすべてのシークレットを取得するアクセス許可を付与します。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "secretsmanager:GetSecretValue",
        "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:TestEnv/*"
    }
}
```

**Example すべてのシークレットのメタデータにアクセスする**  
以下のポリシーは、`DescribeSecret` および `List` で始まるアクセス許可 (`ListSecrets` および `ListSecretVersionIds`) を付与します。    
****  

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

**Example シークレット名を一致する**  
次のポリシーは、Secrets Manager のシークレット名へのすべてのアクセス許可を付与します。このポリシーを使用するには、「[アイデンティティベースのポリシー](#auth-and-access_iam-policies)」を参照してください。  
シークレット名を照合するには、リージョン、アカウント ID、シークレット名、ワイルドカード (`?`) を組み合わせてシークレットの ARN を作成し、個々のランダムな文字に一致させます。Secrets Manager は、ARN の一部としてシークレット名に 6 つのランダムな文字を追加するため、このワイルドカードを使用してこれらの文字に一致させることができます。`"another_secret_name-*"` 構文を使用した場合、Secrets Manager は、意図した 6 つのランダムの文字があるシークレットだけでなく、`"another_secret_name-<anything-here>a1b2c3"` にも一致します。  
シークレットの ARN の 6 つのランダムな文字以外のすべての部分を予測できるため、ワイルドカード文字の `'??????'` 構文を使用することで、まだ存在していないシークレットに安全にアクセス許可を付与することができます。ただし、シークレットを削除して同じ名前で再作成すると、6 つの文字が変更されたにもかかわらず、ユーザーが自動的に新しいシークレットへのアクセス許可を受け取ることに注意してください。    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:a_specific_secret_name-a1b2c3",
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:another_secret_name-??????"
            ]
        }
    ]
}
```

## 例: シークレットを作成するアクセス許可
<a name="auth-and-access_examples_create"></a>

シークレットを作成するアクセス許可を付与するには、ユーザーが属する IAM グループにアクセス許可ポリシーをアタッチすることをお勧めします。「[IAM ユーザーグループ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)」を参照してください。

**Example シークレットを作成する**  
次のポリシーは、シークレットを作成してシークレットのリストを表示するアクセス許可を付与します。このポリシーを使用するには、「[アイデンティティベースのポリシー](#auth-and-access_iam-policies)」を参照してください。    
****  

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

## 例: シークレットを暗号化するための特定の AWS KMS キーを拒否する
<a name="auth-and-access_examples_kmskey"></a>

**重要**  
カスタマーマネージドキーを拒否するには、キーポリシーまたはキー付与を使用してアクセスを制限することをお勧めします。詳細については、「*AWS Key Management Service Developer Guide*」の「[Authentication and access control for AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)」を参照してください。

**Example AWS マネージドキーを拒否する `aws/secretsmanager`**  
次のポリシーは、シークレットを作成または更新するための の使用 AWS マネージドキー `aws/secretsmanager`を拒否します。このポリシーでは、カスタマーマネージドキーを使用してシークレットを暗号化する必要があります。ポリシーには、2 つのステートメントが含まれています。  

1. 最初のステートメント は`Sid: "RequireCustomerManagedKeysOnSecrets"`、 を使用してシークレットを作成または更新するリクエストを拒否します AWS マネージドキー `aws/secretsmanager`。

1. 2 番目のステートメント は`Sid: "RequireKmsKeyIdParameterOnCreate"`、Secrets Manager がデフォルトで を使用するため、KMS キーを含まないシークレットの作成リクエストを拒否します AWS マネージドキー `aws/secretsmanager`。  
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
  {
      "Sid": "RequireCustomerManagedKeysOnSecrets",
      "Effect": "Deny",
      "Action": [
          "secretsmanager:CreateSecret",
          "secretsmanager:UpdateSecret"
      ],
      "Resource": "*",
      "Condition": {
          "StringLikeIfExists": {
              "secretsmanager:KmsKeyArn": "<key_ARN_of_the_AWS_managed_key>"
          }
      }
  },
  {
      "Sid": "RequireKmsKeyIdParameterOnCreate",
      "Effect": "Deny",
      "Action": "secretsmanager:CreateSecret",
      "Resource": "*",
      "Condition": {
          "Null": {
              "secretsmanager:KmsKeyArn": "true"
          }
      }
  }
]
}
```