GitHub OrganizationでSecretsを組織レベルで共有、設定できるようになりました!

これからは組織レベルでSecretsを指定できるため、複数のリポジトリで同じ変数を使う場合にまとめて設定出来たり、リポジトリ追加の為にアクセスキー情報を保存しておく必要がなくなり、キーローテーションも全リポジトリ一括で変更することが出来るようになります!
2020.05.15

どうも、最近運動不足に悩まされているもこ@札幌オフィスです。

GitHub Satelliteのアップデートを追っていこうと思いChangelogを眺めていたら、地味にうれしいアップデートを見つけました。

https://github.blog/changelog/2020-05-14-organization-secrets/

どうやら、Organization単位でGitHub Actionsで利用できるSecretsを指定出来るようになったみたいです!

Organization単位でSecretsを設定できるようになってうれしい事

これまではリポジトリ単位でSecretsを指定しないといけないため、新しいプロジェクトが増えたときに毎回Secretsを登録する必要があったり、環境変数をローテーションするときにリポジトリ単位で設定する必要があるため、リポジトリが2桁を超えるとつらくなっていました。。

また、AWSのIAM Userは、シークレットアクセスキーを作成したタイミングでしか表示することが出来ず、毎回新しいリポジトリを作るときに別途IAM Userを作成したり、安全な方法でIAM Userのアクセスキー情報を保存しておく必要がありました。

これからは組織レベルでSecretsを指定できるため、複数のリポジトリで同じ変数を使う場合にまとめて設定出来たり、リポジトリ追加の為にアクセスキー情報を保存しておく必要がなくなり、キーローテーションも全リポジトリ一括で変更することが出来るようになります!

使ってみた

早速使ってみましょう。

OrganizationのSettingsページを見てみると、「Secrets」の表示がありました。

Secrets設定画面では、Secretsのアクセス権限を「全リポジトリ」、「プライベートリポジトリ」、「指定したリポジトリ」単位で設定が可能です。

一番下のリポジトリ単位での設定を開いてみると、組織で管理されているリポジトリ一覧が出てきて、チェックで指定することが出来ます。素晴らしいですね。

リポジトリのSecrets画面のアップデート

リポジトリのSecrets画面では、Organizationレベルで共有されたSecretsを見れるようになっていました。

リポジトリ側でOrganizationと同じKeyのSecretsを設定してみたところ、OrganizationのSecrestを上書きする形で実行してくれるみたいです。

GitHub Actionsで利用してみる

従来通りに secrets.KEY のように指定して利用できるのかを試すため、こんな感じのWorkflowを作ってみました。

name: CI
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
jobs:
  plan:
    name: test-workflow
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-northeast-1 

      - name: command run 
        run: | 
          aws sts get-caller-identity

実行するとこんな感じで、Workflowのコードは変更すること無くOrganizationのSecrestを利用できることを確認出来ました。

AWSアカウント番号もマスキングしてくれて便利ですね。

まとめ

これまではリポジトリ単位でSecretsを設定していましたが、GitHub Organization単位でSecrestを作成できるようになり、管理やキーローテーションが簡単に出来るようになる、地味に嬉しいアップデートでした。

お役に立てれば嬉しいです。もこでしたー。