CodePipeline
ユーザーガイド (API バージョン 2015-07-09)

GitHub 個人用のアクセストークンを定期的にローテーションする (GitHub と CLI)

スクリプトのパスワードの代わりにトークンを使用する利点は、トークンは取り消したりローテーションさせたりできることです。また、個人用のアクセストークンに特定の権限とアクセス許可を与えることもできます。トークンは安全に保管し、定期的にローテーションまたは再生成する必要があります。トークンローテーションは、RFC-6819 (OAuth 2.0 の脅威モデルとセキュリティ上の考慮事項)、セクション 5.1.5.3 で推奨されています。

詳細については、GitHub ウェブサイトの「コマンドライン用の個人アクセストークンの作成」を参照してください。

新しい個人用アクセストークンを再生成したら、CLI または API を使用してローテーションすることができます。AWS CloudFormation を使用して UpdatePipeline を呼び出すこともできます。

注記

同じ個人用のアクセストークンを使用している場合は、他のアプリケーションの更新が必要になる場合があります。セキュリティのベストプラクティスとして、複数のアプリケーション間で単一のトークンを共有しないでください。各アプリケーションに対して新しい個人用のアクセストークンを作成します。

これらの手順を使用して、GitHub 個人用アクセストークンをローテーションし、パイプライン構造を新しいトークンで更新します。

注記

個人用アクセストークンをローテーションした後、古いトークン情報を含む CLI スクリプトまたは AWS CloudFormation テンプレートを必ず更新してください。

  1. GitHub で、プロフィール写真のドロップダウンオプションから、[Settings] を選択します。

  2. [Developer settings] を選択してから [Personal access tokens] を選択します。

  3. GitHub の個人用アクセストークンの横にある [編集] を選択します。

    
                                個人用のアクセストークンを編集します。
  4. [Regenerate token] を選択します。

    
                                個人用アクセストークンを再生成して編集します。
  5. 再生成されたトークンの横にあるコピーアイコンをクリックします。

    注記

    この時点で、生成されたトークンを確実にコピーしてください。このページを閉じた後でトークンを表示することはできません。

    
                                ローテーションされたトークンをコピーします。
  6. ターミナル (Linux, macOS, or Unix) またはコマンドプロンプト (Windows) で、個人用アクセストークンを変更するパイプラインに対して get-pipeline コマンドを実行し、コマンドの出力を JSON ファイルにコピーします。たとえば、MyFirstPipeline という名前のパイプラインに対しては、以下のようなコマンドを入力します。

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    コマンドの出力は pipeline.json ファイルに送られます。

  7. プレーンテキストエディタでファイルを開き、GitHub アクションの OAuthTokenField の値を編集します。アスタリスク (****) を GitHub からコピーしたトークンに置き換えます。例:

    { "configuration": { "Owner": "MyGitHubUserName", "Repo": "test-repo", "Branch": "master", "OAuthToken": "Replace the **** with your personal access token" },
  8. get-pipeline コマンドを使用して取得されたパイプライン構造を操作している場合、ファイルから metadata 行を削除して JSON ファイルの構造を変更する必要があります。そうしないと、update-pipeline コマンドはこのファイルを使用することができません。JSON ファイルのパイプライン構造からセクションを削除します ("metadata": { } 行と、その中の created"、"pipelineARN"、および "updated" の各フィールド)。

    たとえば、構造から以下の行を削除します。

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }
  9. ファイルを保存したら、先ほど編集した JSON ファイルを --cli-input-json パラメータで指定して、update-pipeline を実行します。たとえば、MyFirstPipeline という名前のパイプラインを更新するには、以下のように入力します。

    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json
  10. パイプラインの更新が終了したら、JSON ファイルを削除します。

詳細については、「パイプラインのエラー : 「GitHubリポジトリにアクセスできませんでした」または「GitHubリポジトリに接続できませんでした」というパイプラインエラーが表示されます。」を参照してください。