GitHubリポジトリの公開範囲の確認

GitHubリポジトリの公開目的と内容を確認し、内部専用リポジトリは非公開にしてください。

説明

内部用ソースコードを含むGitHubリポジトリを公開すると、外部の人がコードや公開された資料を読めるようになります。公開プロジェクトは正当な用途にもなるため、公開目的と機密情報の有無を確認する必要があります。

非公開に変えても、すでにコピーされたコードや漏えいしたシークレットは回収できません。公開範囲と書き込み権限・デプロイ権限も別々に管理してください。

想定される影響

  • 内部コードや運用情報が外部に公開される可能性があります。
  • 過去のコミットにあるシークレットがコピーされ、非公開への変更後も悪用されるおそれがあります。

対処方法

内部専用リポジトリを新規作成するときはIsPrivateをtrueにし、実際のGitHub公開状態を確認してください。既存リポジトリの公開範囲はGitHubで対応する手順で変更してください。このCloudFormationプロパティは更新に対応しません。公開履歴にあるシークレットを失効・交換し、共同作業者と自動化トークンの権限も確認してください。

例

新しいリポジトリを作成する際の2つの構成例です。S3ソース、所有者、名前、トークン参照を実際の値に置き換えてください。既存リポジトリの公開範囲をテンプレート更新で変える例ではありません。

変更前

yaml
AWSTemplateFormatVersion: "2010-09-09"
Resources:
  MyRepo3:
    Type: AWS::CodeStar::GitHubRepository
    Properties:
      Code:
        S3:
          Bucket: "my-bucket"
          Key: "sourcecode.zip"
          ObjectVersion: "1"
      EnableIssues: true
      IsPrivate: false
      RepositoryAccessToken: '{{resolve:secretsmanager:your-secret-manager-name:SecretString:your-secret-manager-key}}'
      RepositoryDescription: a description
      RepositoryName: my-github-repo
      RepositoryOwner: my-github-account

IsPrivate: falseで公開リポジトリを作成します。意図した公開プロジェクトか確認してください。

変更後

yaml
AWSTemplateFormatVersion: "2010-09-09"
Resources:
  MyRepo1:
    Type: AWS::CodeStar::GitHubRepository
    Properties:
      Code:
        S3:
          Bucket: "my-bucket"
          Key: "sourcecode.zip"
          ObjectVersion: "1"
      EnableIssues: true
      IsPrivate: true
      RepositoryAccessToken: '{{resolve:secretsmanager:your-secret-manager-name:SecretString:your-secret-manager-key}}'
      RepositoryDescription: a description
      RepositoryName: my-github-repo
      RepositoryOwner: my-github-account

IsPrivate: trueで非公開リポジトリを作成します。非公開であっても、コードへのシークレット埋め込みは避けてください。

参考資料