

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

# リソースベースのポリシー
<a name="auth-and-access_resource-policies"></a>

リソースベースのポリシーで、シークレットにアクセスできるユーザーと、ユーザーがそのシークレットで実行できるアクションを指定します。リソースベースのポリシーを使用して、以下を行うことができます。
+ 単一のシークレットへのアクセスを複数のユーザーまたはロールに許可します。
+ 他の AWS アカウントのユーザーまたはロールにアクセスを許可します。

コンソールでリソースベースのポリシーをシークレットにアタッチすると、Secrets Manager は自動化された推論エンジン [Zelkova](https://aws.amazon.com/blogs/security/protect-sensitive-data-in-the-cloud-with-automated-reasoning-zelkova/) と API `ValidateResourcePolicy` を使用して、シークレットへのアクセス許可を幅広い範囲の IAM プリンシパルに付与しないようにします。または、CLI または SDK からの `BlockPublicPolicy` パラメータを含む `PutResourcePolicy` API を呼び出しします。

**重要**  
リソースポリシーの検証と `BlockPublicPolicy` パラメータは、シークレットに直接アタッチされているリソースポリシーを通じてパブリックアクセスが付与されないようにすることで、リソースを保護するのに役立ちます。これらの機能を利用したうえでさらに、次のポリシーを注意深く調べて、パブリックアクセスが許可されていないことを確かめてください。  
関連付けられた AWS プリンシパルにアタッチされたアイデンティティベースのポリシー (IAM ロールなど) 
関連付けられたリソースにアタッチされた AWS リソースベースのポリシー (例: AWS Key Management Service (AWS KMS) キー) 
シークレットへのアクセス許可を確認するには、「[ シークレットへのアクセス許可を持つユーザーを特定する](determine-acccess_examine-iam-policies.md)」を参照してください。

**シークレットのリソースポリシーを表示、変更、または削除するには (コンソール)**

1. Secrets Manager のコンソール ([https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)) を開きます。

1. シークレットのリストから、自分のシークレットを選択します。

1. シークレットの詳細ページの **[概要]** タブの **[リソース許可]** セクションで、**[許可を編集]** を選択します。

1. [Code] (コード) フィールドで、次のいずれかの操作を行い、[**Save**] (保存する) をクリックします。
   + リソースポリシーをアタッチまたは変更するには、ポリシーを入力します。
   + ポリシーを削除するには、[Code] (コード) フィールドをクリアします。

## AWS CLI
<a name="auth-and-access_resource_cli"></a>

**Example リソースポリシーを取得する**  
次に、シークレットにアタッチされたリソースベースのポリシーを取得する、[https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-resource-policy.html](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-resource-policy.html) の例を示します。  

```
aws secretsmanager get-resource-policy \
    --secret-id MyTestSecret
```

**Example リソースポリシーを削除する**  
次に、シークレットにアタッチされているリソースベースのアポリシーを削除する、[https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/delete-resource-policy.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/delete-resource-policy.html) の例を示します。  

```
aws secretsmanager delete-resource-policy \
    --secret-id MyTestSecret
```

**Example リソースポリシーを追加する**  
次の [https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/put-resource-policy.html](https://docs.aws.amazon.com//cli/latest/reference/secretsmanager/put-resource-policy.html) の例では、ポリシーが広範なアクセスをシークレットに提供していないことを最初に確認しながら、シークレットに許可ポリシーを追加しています。このポリシーは、ファイルから読み込まれます。詳細については、「 AWS CLI ユーザーガイド[」の「ファイルからの AWS CLI パラメータのロード](https://docs.aws.amazon.com//cli/latest/userguide/cli-usage-parameters-file.html)」を参照してください。  

```
aws secretsmanager put-resource-policy \
    --secret-id MyTestSecret \
    --resource-policy file://mypolicy.json \
    --block-public-policy
```
`mypolicy.json` の内容:    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:role/MyRole"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "*"
        }
    ]
}
```

## AWS SDK
<a name="auth-and-access_resource_sdk"></a>

シークレットにアタッチされているポリシーを取得するには、[https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetResourcePolicy.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetResourcePolicy.html) を使用します。

シークレットにアタッチされているポリシーを削除するには、[https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteResourcePolicy.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteResourcePolicy.html) を使用します。

ポリシーをシークレットにアタッチするには、[https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutResourcePolicy.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutResourcePolicy.html) を使用します。ポリシーがすでにアタッチされている場合、コマンドはそのポリシーを新しいポリシーに置き換えます。ポリシーは、JSON 構造化テキストとしてフォーマットする必要があります。[JSON ポリシードキュメント構造](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies-introduction)を参照してください。

詳細については、「[AWS SDKs](asm_access.md#asm-sdks)」を参照してください。

## 例
<a name="auth-and-access_resource-policy-examples"></a>

**Topics**
+ [例: 個別のシークレット値を取得するためのアクセス許可](#auth-and-access_examples_read)
+ [例: アクセス許可と VPC](#auth-and-access_examples_vpc)
+ [例:サービスプリンシパル](#auth-and-access_service)

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

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

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

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

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/EC2RoleToAccessSecrets"
            },
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "*"
        }
    ]
}
```

### 例: アクセス許可と VPC
<a name="auth-and-access_examples_vpc"></a>

VPC 内からSecrets Manager にアクセスする必要がある場合は、アクセス許可ポリシーに条件を含めることで、Secret Manager へのリクエストが VPC から確実に送信されるようにすることができます。詳細については、「[VPC エンドポイント条件でリクエストを制限する](best-practices.md#iam-contextkeys-vpcendpoint)」および「[AWS Secrets Manager VPC エンドポイントの使用](vpc-endpoint-overview.md)」を参照してください。

他の AWS サービスからのシークレットへのアクセスリクエストも VPC からのものであることを確認してください。そうでない場合、このポリシーはアクセスを拒否します。

**Example リクエストが VPC エンドポイント経由で送信されるように要求する**  
例えば、次のポリシーでは、リクエストが VPC エンドポイント *`vpce-1234a5678b9012c`* を通過して送信されている場合にのみ、ユーザーが Secrets Manager オペレーションを実行できます。    
****  

```
{
"Id": "example-policy-1",
"Version":"2012-10-17",		 	 	 
"Statement": [
{
  "Sid": "RestrictGetSecretValueoperation",
  "Effect": "Deny",
  "Principal": "*",
  "Action": "secretsmanager:GetSecretValue",
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "aws:sourceVpce": "vpce-12345678"
    }
  }
}
]
}
```

**Example リクエストが VPC から送信されるように要求する**  
次のポリシーでは、シークレットを作成および管理するコマンドが許可されるのは、そのコマンドが *`vpc-12345678`* から送信されている場合のみです。また、このポリシーでは、リクエストが `vpc-2b2b2b2b` から届いた場合にのみ、シークレットの暗号化された値へのアクセスを使用するオペレーションを許可します。1 つの VPC でアプリケーションを実行する場合は、このようなポリシーを使用できますが、管理機能には 2 番目の切り離された VPC を使用します。    
****  

```
{
"Id": "example-policy-2",
"Version":"2012-10-17",		 	 	 
"Statement": [
{
  "Sid": "AllowAdministrativeActionsfromONLYvpc-12345678",
  "Effect": "Deny",
  "Principal": "*",
  "Action": [
    "secretsmanager:Create*",
    "secretsmanager:Put*",
    "secretsmanager:Update*",
    "secretsmanager:Delete*",
    "secretsmanager:Restore*",
    "secretsmanager:RotateSecret",
    "secretsmanager:CancelRotate*",
    "secretsmanager:TagResource",
    "secretsmanager:UntagResource"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "aws:sourceVpc": "vpc-12345678"
    }
  }
},
{
  "Sid": "AllowSecretValueAccessfromONLYvpc-2b2b2b2b",
  "Effect": "Deny",
  "Principal": "*",
  "Action": [
    "secretsmanager:GetSecretValue"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "aws:sourceVpc": "vpc-2b2b2b2b"
    }
  }
}
]
}
```

### 例:サービスプリンシパル
<a name="auth-and-access_service"></a>

シークレットにアタッチされているリソースポリシーに[AWS サービスプリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services)が含まれている場合は、[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) そして [aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) グローバル条件キーの使用をお勧めします。ARN とアカウントの値は、別の AWS サービスから Secrets Manager にリクエストが来たときにのみ、承認コンテキストに含まれます。この条件の組み合わせにより、混同される可能性のある[副次的なシナリオ](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)を回避することができます。

リソース ARN にリソースポリシーで許可されていない文字が含まれている場合、そのリソース ARN を `aws:SourceArn` 条件キーの値として使用することはできません。その代わりに `aws:SourceAccount` 条件キーを使用してください。その他の要件の詳細については、「[IAM requirements](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names)」(IAMの要件) を参照してください。

サービスプリンシパルは通常、シークレットにアタッチされたポリシーではプリンシパルとして使用されませんが、一部の AWS サービスではそれが必要です。サービスがシークレットにアタッチする必要があるリソースポリシーの詳細については、サービスのドキュメントを参照してください。

**Example サービスプリンシパルを使用して、サービスがシークレットにアクセスできるようにする**    
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement": [
{
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "s3.amazonaws.com"
    ]
  },
  "Action": "secretsmanager:GetSecretValue",
  "Resource": "*",
  "Condition": {
    "ArnLike": {
      "aws:sourceArn": "arn:aws:s3::123456789012:*"
    },
    "StringEquals": {
      "aws:sourceAccount": "123456789012"
    }
  }

}
]
}
```