

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

# カスタマーマネージドポリシーの例
<a name="customer-managed-policies"></a>

独自のカスタム IAM ポリシーを作成して、CodeCommit アクションとリソースのための権限を許可することもできます。これらのカスタムポリシーは、それらのアクセス許可が必要な IAM ユーザーまたはグループにアタッチできます。CodeCommit と他の AWS のサービスを統合するための独自のカスタム IAM ポリシーを作成することもできます。

**Topics**
+ [カスタマー管理のアイデンティティポリシーの例](#customer-managed-policies-identity)

## カスタマー管理のアイデンティティポリシーの例
<a name="customer-managed-policies-identity"></a>

次の IAM ポリシーの例では、さまざまな CodeCommit アクションのアクセス許可を付与します。それらを使用して、IAM ユーザーおよびロールに対して CodeCommit アクセスを制限します。これらのポリシーは、CodeCommit コンソール、API、 AWS SDKs、または を使用してアクションを実行する機能を制御します AWS CLI。



**注記**  
すべての例で、米国西部 (オレゴン) リージョン (us-west-2) を使用し、架空のアカウント ID を使用しています。

 **例**
+ [例 1: ユーザーが 1 つの で CodeCommit オペレーションを実行することを許可する AWS リージョン](#identity-based-policies-example-1)
+ [例 2: 1 つのリポジトリで Git を使用することをユーザーに許可する](#identity-based-policies-example-2)
+ [例 3: 指定した IP アドレス範囲から接続するユーザーにリポジトリへのアクセスを許可する](#identity-based-policies-example-3)
+ [例 4: ブランチに対するアクションを許可または拒否する](#identity-based-policies-example-4)
+ [例 5: タグを使用してリポジトリに対するアクションを許可または拒否する](#identity-based-policies-example-5)

### 例 1: ユーザーが 1 つの で CodeCommit オペレーションを実行することを許可する AWS リージョン
<a name="identity-based-policies-example-1"></a>

次のアクセス許可ポリシーでは、ワイルドカード文字 (`"codecommit:*"`) を使用して、他の AWS リージョンからではなく、us-east-2 リージョンですべての CodeCommit アクションを実行できるようにしています。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "codecommit:*",
            "Resource": "arn:aws:codecommit:us-east-2:111111111111:*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-east-2"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "codecommit:ListRepositories",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestedRegion": "us-east-2"
                }
            }
        }
    ]
}
```

------

### 例 2: 1 つのリポジトリで Git を使用することをユーザーに許可する
<a name="identity-based-policies-example-2"></a>

CodeCommit では、`GitPull` IAM ポリシーのアクセス許可は、**git fetch**、**git clone** など、CodeCommit からデータを取得する Git クライアントコマンドに適用されます。同様に、`GitPush` IAM ポリシーアクセス許可は、CodeCommit にデータを送信する Git クライアントコマンドに適用されます。例えば、`GitPush` IAM ポリシーアクセス許可が `Allow` に設定されている場合、ユーザーは Git プロトコルを使用してブランチの削除をプッシュできます。そのプッシュは、その IAM ユーザーの `DeleteBranch` オペレーションに適用されているどのアクセス許可の影響も受けません。アクセス`DeleteBranch`許可は、コンソール、 AWS CLI、 SDKs、API で実行されるアクションに適用されますが、Git プロトコルには適用されません。

以下の例では、指定したユーザーが `MyDemoRepo` という名前の CodeCommit リポジトリに対してプルおよびプッシュできるようにしています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "codecommit:GitPull",
        "codecommit:GitPush"
      ],
      "Resource" : "arn:aws:codecommit:us-east-2:{{111122223333}}:MyDemoRepo"
    }
  ]
}
```

------

### 例 3: 指定した IP アドレス範囲から接続するユーザーにリポジトリへのアクセスを許可する
<a name="identity-based-policies-example-3"></a>

IP アドレスが特定の IP アドレス範囲にある場合にのみ、ユーザーが CodeCommit リポジトリに接続することを許可するポリシーを作成できます。これには、有効なアプローチが 2 つあります。ユーザーの IP アドレスが特定のブロック内にない場合に CodeCommit オペレーションを拒否する `Deny` ポリシーを作成するか、または、ユーザーの IP アドレスが特定のブロック内にある場合に CodeCommit オペレーションを許可する `Allow` ポリシーを作成することができます。

特定の IP 範囲にないすべてのユーザーのアクセスを拒否する `Deny` ポリシーを作成することができます。例えば、AWSCodeCommitPowerUser 管理ポリシーとカスタマー管理ポリシーをリポジトリへのアクセスを必要とするすべてのユーザーにアタッチできます。次のポリシーの例では、IP アドレスが指定された IP アドレスのブロック 203.0.113.0/16 にないユーザーの CodeCommit アクセス許可をすべて拒否します。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Deny",
         "Action": [
            "codecommit:*"
         ],
         "Resource": "*",
         "Condition": {
            "NotIpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------

次のポリシーの例では、MyDemoRepo という名前の CodeCommit リポジトリに、指定されたユーザーが、IP アドレスが指定された 203.0.113.0/16 のアドレスブロック内である場合に、同等のアクセス許可である AWSCodeCommitPowerUser 管理ポリシーでアクセスするのを許可します。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
            "codecommit:BatchGetRepositories",
            "codecommit:CreateBranch",
            "codecommit:CreateRepository",
            "codecommit:Get*",
            "codecommit:GitPull",
            "codecommit:GitPush",
            "codecommit:List*",
            "codecommit:Put*",
            "codecommit:Post*",
            "codecommit:Merge*",
            "codecommit:TagResource",
            "codecommit:Test*",
            "codecommit:UntagResource",
            "codecommit:Update*"
         ],
         "Resource": "arn:aws:codecommit:us-east-2:{{111122223333}}:MyDemoRepo",
         "Condition": {
            "IpAddress": {
               "aws:SourceIp": [
                  "203.0.113.0/16"
               ]
            }
         }
      }
   ]
}
```

------



### 例 4: ブランチに対するアクションを許可または拒否する
<a name="identity-based-policies-example-4"></a>

1 つ以上のブランチで、指定したアクションに対するユーザーのアクセス許可を拒否するポリシーを作成できます。あるいは、リポジトリの他のブランチにはないような、1 つ以上のブランチに対してアクションを許可するポリシーを作成することもできます。これらのポリシーは、適切な管理 (事前定義済み) ポリシーとともに使用できます。詳細については、「[のブランチへのプッシュとマージを制限する AWS CodeCommit](how-to-conditional-branch.md)」を参照してください。

例えば、{{MyDemoRepo}} という名前のリポジトリで、そのブランチを削除することを含め、ユーザーが main という名前のブランチに変更を加えることを拒否する `Deny` ポリシーを作成できます。このポリシーは、**AWSCodeCommitPowerUser** 管理ポリシーとともに使用できます。これら 2 つのポリシーが適用されたユーザーは、ブランチの作成と削除、プルリクエストの作成、および **AWSCodeCommitPowerUser** で許可されているその他すべてのアクションを実行できますが、*main* というブランチに変更をプッシュしたり、CodeCommit コンソールの *main* ブランチのファイルを追加または編集したり、ブランチまたはプルリクエストを *main* ブランチにマージしたりすることはできません。`Deny` に `GitPush` が適用されているので、ユーザーがローカルリポジトリからプッシュしたときに最初の `Null` 呼び出しの有効性を分析できるように、ポリシーに `GitPush` ステートメントを含める必要があります。

**ヒント**  
Amazon Web Services アカウントのすべてのリポジトリで *main* という名前のすべてのブランチに適用するポリシーを作成する場合、`Resource` では、リポジトリ ARN の代わりにアスタリスク (`*`) を指定します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "codecommit:GitPush",
                "codecommit:DeleteBranch",
                "codecommit:PutFile",
                "codecommit:Merge*"
            ],
            "Resource": "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo",
            "Condition": {
                "StringEqualsIfExists": {
                    "codecommit:References": [
                        "refs/heads/main"   
                    ]
                },
                "Null": {
                    "codecommit:References": "false"
                }
            }
        }
    ]
}
```

------

次のポリシー例では、ユーザーは Amazon Web Services アカウントのすべてのリポジトリ内の main というブランチに変更を加えることができます。他のブランチへの変更は許可されません。このポリシーを AWSCodeCommitReadOnly 管理ポリシーとともに使用して、main ブランチにあるリポジトリへの自動プッシュを許可することができます。効果は `Allow` であるため、この例のポリシーは AWSCodeCommitPowerUser などの管理ポリシーでは機能しません。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codecommit:GitPush",
                "codecommit:Merge*"
            ],
            "Resource": "*",
            "Condition": {
                "StringEqualsIfExists": {
                    "codecommit:References": [
                        "refs/heads/main"
                    ]
                }
            }
        }
    ]
}
```

------



### 例 5: タグを使用してリポジトリに対するアクションを許可または拒否する
<a name="identity-based-policies-example-5"></a>

リポジトリに関連付けられた AWS タグに基づいてリポジトリに対するアクションを許可または拒否するポリシーを作成し、それらのポリシーを IAM ユーザーを管理するために設定した IAM グループに適用できます。たとえば、 AWS タグキー *Status* と *Secret* のキー値を持つリポジトリのすべての CodeCommit アクションを拒否するポリシーを作成し、そのポリシーを一般的な開発者 ({{開発者}}) 用に作成した IAM グループに適用できます。次に、上記のタグ付けされたリポジトリ上で作業するデベロッパーが一般的な{{デベロッパー}}グループのメンバーではなく、代わりに制限されたポリシーが適用されていない別の IAM グループに属していること (*SecretDevelopers*) を確認する必要があります。

次の例では、*Status* キーと *Secret* のキー値でタグ付けされたリポジトリ上のすべての CodeCommit アクションを拒否しています。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "codecommit:Associate*",
        "codecommit:Batch*",
        "codecommit:CancelUploadArchive",
        "codecommit:CreateBranch",
        "codecommit:CreateCommit",
        "codecommit:CreatePullRequest*",
        "codecommit:CreateRepository",
        "codecommit:CreateUnreferencedMergeCommit",
        "codecommit:DeleteBranch",
        "codecommit:DeleteCommentContent",
        "codecommit:DeleteFile",
        "codecommit:DeletePullRequest*",
        "codecommit:DeleteRepository",
        "codecommit:Describe*",
        "codecommit:DisassociateApprovalRuleTemplateFromRepository",
        "codecommit:EvaluatePullRequestApprovalRules",
        "codecommit:GetBlob",
        "codecommit:GetBranch",
        "codecommit:GetComment*",
        "codecommit:GetCommit",
        "codecommit:GetDifferences*",
        "codecommit:GetFile",
        "codecommit:GetFolder",
        "codecommit:GetMerge*",
        "codecommit:GetObjectIdentifier",
        "codecommit:GetPullRequest*",
        "codecommit:GetReferences",
        "codecommit:GetRepository*",
        "codecommit:GetTree",
        "codecommit:GetUploadArchiveStatus",
        "codecommit:Git*",
        "codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
        "codecommit:ListBranches",
        "codecommit:ListPullRequests",
        "codecommit:ListTagsForResource",
        "codecommit:Merge*",
        "codecommit:OverridePullRequestApprovalRules",
        "codecommit:Post*",
        "codecommit:Put*",
        "codecommit:TagResource",
        "codecommit:TestRepositoryTriggers",
        "codecommit:UntagResource",
        "codecommit:UpdateComment",
        "codecommit:UpdateDefaultBranch",
        "codecommit:UpdatePullRequest*",
        "codecommit:UpdateRepository*",
        "codecommit:UploadArchive"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Status": "Secret"
        }
      }
    }
  ]
}
```

------

すべてのリポジトリではなく、特定のリポジトリをリソースとして指定することで、この戦略をさらに精密にすることができます。また、特定のタグによってタグ付けされていないすべてのリポジトリ上の CodeCommit アクションを許可するポリシーを作成することもできます。例えば、次のポリシーは特定のタグによってタグ付けされていないリポジトリでCodeCommit アクションのみを許可することを除き、CodeCommit アクションに対する **AWSCodeCommitPowerUser** 許可に相当する許可を付与します。

**注記**  
このポリシーの例には、CodeCommit のアクションのみが含まれます。**AWSCodeCommitPowerUser** 管理ポリシーに含まれる他の AWS サービスのアクションは含まれません。詳細については、「」を参照してください[AWS マネージドポリシー: AWSCodeCommitPowerUser](security-iam-awsmanpol.md#managed-policies-poweruser)。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:Associate*",
        "codecommit:Batch*",
        "codecommit:CancelUploadArchive",
        "codecommit:CreateBranch",
        "codecommit:CreateCommit",
        "codecommit:CreatePullRequest*",
        "codecommit:CreateRepository",
        "codecommit:CreateUnreferencedMergeCommit",
        "codecommit:DeleteBranch",
        "codecommit:DeleteCommentContent",
        "codecommit:DeleteFile",
        "codecommit:DeletePullRequest*",
        "codecommit:Describe*",
        "codecommit:DisassociateApprovalRuleTemplateFromRepository",
        "codecommit:EvaluatePullRequestApprovalRules",
        "codecommit:GetBlob",
        "codecommit:GetBranch",
        "codecommit:GetComment*",
        "codecommit:GetCommit",
        "codecommit:GetDifferences*",
        "codecommit:GetFile",
        "codecommit:GetFolder",
        "codecommit:GetMerge*",
        "codecommit:GetObjectIdentifier",
        "codecommit:GetPullRequest*",
        "codecommit:GetReferences",
        "codecommit:GetRepository*",
        "codecommit:GetTree",
        "codecommit:GetUploadArchiveStatus",
        "codecommit:Git*",
        "codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
        "codecommit:ListBranches",
        "codecommit:ListPullRequests",
        "codecommit:ListTagsForResource",
        "codecommit:Merge*",
        "codecommit:OverridePullRequestApprovalRules",
        "codecommit:Post*",
        "codecommit:Put*",
        "codecommit:TagResource",
        "codecommit:TestRepositoryTriggers",
        "codecommit:UntagResource",
        "codecommit:UpdateComment",
        "codecommit:UpdateDefaultBranch",
        "codecommit:UpdatePullRequest*",
        "codecommit:UpdateRepository*",
        "codecommit:UploadArchive"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/Status": "Secret",
          "aws:ResourceTag/Team": "Saanvi"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:CreateApprovalRuleTemplate",
        "codecommit:GetApprovalRuleTemplate",
        "codecommit:ListApprovalRuleTemplates",
        "codecommit:ListRepositories",
        "codecommit:ListRepositoriesForApprovalRuleTemplate",
        "codecommit:UpdateApprovalRuleTemplateContent",
        "codecommit:UpdateApprovalRuleTemplateDescription",
        "codecommit:UpdateApprovalRuleTemplateName"
      ],
      "Resource": "*"
    }
  ]
}
```

------