目次

Template Scanner Githubアプリ

Template Scanner Github Appは、 infrastructure-as-code テンプレートをスキャンし、セキュリティのベストプラクティスに照らして評価します。組織内のリポジトリを選択して、開いたプルリクエストを自動的に検索したり、選択したGithubリポジトリでプルリクエストをアップデートしたりできます。

現在、Github Enterpriseの組織はサポートされていません。

Template Scanner Githubアプリのインストール方法

GitHubソースアカウントの使用を開始する の手順に従って、Githubアプリをインストールしてください。

検索対象の設定方法

初期設定では、Template Scanner Githubアプリは、リポジトリのルートにあるCloudFormationテンプレートを検索します。たとえば、cloudformation.yml、cloudformation.json、template.yml、およびリポジトリ内の任意のレベルのterraform「.tf」ファイルが検索されます。

検索対象を設定して上書きするには 1. リポジトリのルートに .template-security ディレクトリを作成します。 2. .template-security/ にconfig.jsonファイルを設定とともに追加します。 例:


{
  "frameworks": {
    "terraform": { "templateFilesPattern": "**/*(*.tf|*.tfvars)" },
    "cloudformation": { "templateFilesPattern": "**/*(*.yml)" }
  }
}

使用可能な設定

  • frameworks: (オブジェクト) には、キーとして検索するフレームワークが含まれています。サポートされる値 "terraform" | "cloudformation"
  • templateFilesPattern:(文字列)ファイルとディレクトリの照合にファイルパターンを使用します。

パス部分に一致する特殊文字:

  • * 1つのパス部分の0文字以上に一致
  • ? 1文字に一致
  • [...] 正規表現の範囲と同様に、文字の範囲に一致します。 範囲の最初の文字が ! または ^ の場合、範囲外の任意の文字に 一致します。
  • !(pattern|pattern|pattern) いずれのパターンにも一致しないものに一致。
  • ?(pattern|pattern|pattern) パターンの0回または1回の出現に一致。
  • +(pattern|pattern|pattern) パターンの1つ以上の出現に一致。
  • *(a|b|c) 0個以上のパターンの出現に一致。
  • @(pattern|pat*|pat?erN) いずれかのパターンに一致。
  • ** 「globstar」がパス部分に単独で存在する場合、 0個以上のディレクトリおよびサブディレクトリに一致。 これはシンボリックリンクディレクトリをクロールしないことに注意してください。

ドット(.)の使用に関する注意

ファイルまたはディレクトリのパス部分の最初の文字が . である場合、そのパターンの 対応パス部分の最初の文字が . でない限り、どのglobパターンにも一致しません。

たとえば、パターンa/.*/ca/.b/cにあるファイルに一致します。 ただし、パターンa/*/cは、*が で開始されないためドットにはなりません。

例:

-  `*(*.tf)` は、`.tf`で終わるファイルのみに一致します
-  `**/*(*.tf|*.tfvars)` は、最上位ディレクトリから順に、`.tf`または`.tfvars`で終わるファイルに一致します
-  `*(*.tf|*.tfvars)` は、ルートディレクトリ内の `.tf` または `.tfvars` で終わるファイルのみに一致します

コードとしてサポートされるインフラストラクチャ

CloudFormationのYAMLおよびJSON

サポートされているリソースの種類:

  • APIGateway RestApi
  • AutoScaling Group
  • AutoScaling Launch Configuration
  • CloudFormation Stack
  • CloudTrail Trail
  • DynamoDb Table
  • EC2 Instance
  • EC2 NatGateway
  • EC2 Network Acl
  • EC2 Network Interface
  • EC2 Route Table
  • EC2 Security Group
  • EC2 Subnet
  • EC2 Volume
  • EC2 VPC
  • EC2 VPCEndpoint
  • EFS File System
  • Elastic Load Balancer v2
  • ElasticCache
  • Elasticsearch Domain
  • ELB Classic Load Balancer
  • EMR Cluster
  • IAM Group
  • IAM Managed Policy
  • IAM Role
  • Kinesis Stream
  • KMS Key
  • Lambda Function
  • RDS Cluster
  • RDS Instance
  • Redshift Cluster
  • S3 Bucket
  • SNS Topic
  • SQS Queue
  • Workspaces

Terraform

サポートされているリソースの種類:

  • DynamoDB
  • EC2 Instance
  • Elastic Load Balancer v2
  • S3 Bucket
  • RDS Cluster
  • RDS Instance
  • SNS Topic
  • SQS Queue

検索を開始する方法

検索を開始するには

  1. Template Scanner Githubアプリをインストールしたリポジトリに対して、Githubでプルリクエストを作成します。検索のステータスは、Githubのプルリクエストの下部に表示されます。
  2. [詳細] をクリックして、検索によって生成された結果を表示します。