Git ソースコード管理を使用する

Secure Source Manager はすべての Git SCM クライアント コマンドをサポートしており、pull リクエストと問題追跡が組み込まれています。HTTPS と SSH 認証 の両方がサポートされています。

必要なロール

Git を使用して Secure Source Manager リポジトリを操作するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。

Secure Source Manager ロールの付与については、 IAM によるアクセス制御ユーザーにインスタンスへのアクセス権を付与するをご覧ください。

Git と Google Cloud CLI をインストールする

  1. Git をインストールします

  2. Git インストーラで [認証情報ヘルパーを選択] するよう求められたら、[なし(認証情報ヘルパーを使用しない)] を選択します。

  3. gcloud CLI をインストールします

  4. HTTPS で Git を使用するには、gcloud CLI バージョン 395.0.0 以降が必要です。gcloud CLI のバージョンを確認するには、次のコマンドを実行します。

    gcloud --version
    
  5. gcloud CLI を更新するには、次のコマンドを実行します。

    gcloud components update
    
  6. 更新後、gcloud init を実行して gcloud CLI を初期化します

    詳細については、コンポーネントの更新に関する gcloud CLI のドキュメントをご覧ください。

認証情報を設定する

サードパーティの ID プロバイダと Workforce Identity 連携を使用して Secure Source Manager を認証する場合は、このセクションを完了する必要はありません。代わりに、Workforce Identity プールのログイン構成を作成する必要があります。

次のコマンドを実行して、Secure Source Manager 認証ヘルパーをグローバル Git 構成に追加します。

Linux

git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh

以前のバージョンの Git では、ワイルドカードがサポートされていない場合があります。ワイルドカードなしで認証ヘルパーを追加するには、次のコマンドを実行します。

git config --global credential.'https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev'.helper gcloud.sh

次のように置き換えます。

  • INSTANCE_ID は、Secure Source Manager インスタンスの名前に置き換えます。
  • PROJECT_NUMBER は、プロジェクト番号に置き換えます。プロジェクト番号を確認するには、 プロジェクトを確認するをご覧ください。
  • LOCATION は、インスタンスのリージョンに置き換えます。リージョンの詳細については、ロケーションをご覧ください。

Windows

git config --global credential.https://*.*.sourcemanager.dev.helper gcloud.cmd

以前のバージョンの Git では、ワイルドカードがサポートされていない場合があります。ワイルドカードなしで認証ヘルパーを追加するには、次のコマンドを実行します。

git config --global credential.https://INSTANCE_ID-PROJECT_NUMBER-git.LOCATION.sourcemanager.dev.helper gcloud.cmd

次のように置き換えます。

  • INSTANCE_ID は、Secure Source Manager インスタンスの名前に置き換えます。
  • PROJECT_NUMBER は、プロジェクト番号に置き換えます。プロジェクト番号を確認するには、 プロジェクトを確認するをご覧ください。
  • LOCATION は、インスタンスのリージョンに置き換えます。リージョンの詳細については、ロケーションをご覧ください。

認証ヘルパーは、gcloud CLI を使用して、Secure Source Manager で Git コマンドを使用するときに Google Cloud 認証情報を取得します。

最初の認証情報の設定後に再認証するには、次の gcloud CLI コマンドを実行します。

gcloud auth login

サービス アカウントを使用して Compute Engine VM から認証する

接続されたサービス アカウントを使用して、Compute Engine 仮想マシン(VM)から認証できます。

VM とサービス アカウントを構成する

Compute Engine のデフォルトのサービス アカウントを使用する場合は、必要な OAuth スコープを使用して VM を作成します。

gcloud compute instances create VM_NAME \
    --project=PROJECT_ID \
    --zone=ZONE \
    --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform

次のように置き換えます。

  • VM_NAME: VM の名前。
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • ZONE: VM のゾーン。

カスタム サービス アカウントを使用する場合は、サービス アカウントを作成してから VM を作成します。

  1. サービス アカウントの作成:

    gcloud iam service-accounts create SA_NAME --project=PROJECT_ID
    

    SA_NAME をサービス アカウントの名前に置き換えます。

  2. サービス アカウントを使用する権限を付与します。サービス アカウントを使用して VM を作成するには、サービス アカウントに対する サービス アカウント ユーザーのロールroles/iam.serviceAccountUser)が必要です。このロールを VM を作成するプリンシパルに付与します。

    gcloud iam service-accounts add-iam-policy-binding SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member="user:USER_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    

    USER_EMAIL は、VM を作成するユーザーのメールアドレスに置き換えます。

  3. VM を作成します。

    gcloud compute instances create VM_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --scopes=openid,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/cloud-platform \
        --service-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

サービス アカウントに IAM のロールを付与する

サービス アカウントに Secure Source Manager インスタンスとリポジトリへのアクセス権を付与します。

  1. インスタンスへのアクセス権を付与します。

    SA_EMAIL=$(gcloud compute instances describe VM_NAME --project=PROJECT_ID --zone=ZONE --format="get(serviceAccounts[0].email)")
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.instanceAccessor
    
  2. リポジトリの読み取りアクセス権を付与します。

    特定のリポジトリへの読み取りアクセス権を付与するには、次のコマンドを実行します。

    gcloud ssm repos add-iam-policy-binding REPOSITORY_ID \
        --instance=INSTANCE_ID \
        --location=LOCATION \
        --member="serviceAccount:$SA_EMAIL" \
        --role=roles/securesourcemanager.repoReader
    

    次のように置き換えます。

    • REPOSITORY_ID: リポジトリ ID。
    • INSTANCE_ID: Secure Source Manager インスタンス ID。
    • LOCATION: Secure Source Manager インスタンスのリージョン。

    書き込みアクセス権を付与するには、ロール roles/securesourcemanager.repoWriter を使用します。

    最小権限の原則に従って、リポジトリ レベルでアクセス権を付与することをおすすめします。プロジェクト内のすべての リポジトリへのアクセス権を付与する必要がある場合は、 IAM によるアクセス制御をご覧ください。

IAM 権限が反映されるまでに数分かかることがあります。

VM で Git を構成する

  1. SSH を使用して VM に接続します。

    gcloud compute ssh VM_NAME --project=PROJECT_ID --zone=ZONE
    
  2. VM に Git をインストールします。

    sudo apt-get install git
    
  3. VM で、 認証情報を設定するの説明に従って Git 認証情報ヘルパーを構成します。たとえば、Linux の場合:

    git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh
    

認証情報ヘルパーを構成すると、Git は VM のサービス アカウントのアプリケーションのデフォルト認証情報を使用して Secure Source Manager を認証します。これで、 リポジトリのクローンを作成できます。アプリケーションのデフォルト認証情報で認証するには、HTTPS リポジトリ URL を使用する必要があります。

Workforce Identity プールのログイン構成を作成する

サードパーティの ID プロバイダを使用して Workforce Identity 連携で Secure Source Manager を認証する場合を除き、このセクションを完了する必要はありません。

gcloud CLI コマンドまたは Git コマンドを使用して、Workforce Identity プールの認証情報で Secure Source Manager インスタンスを認証するには、Workforce Identity プールを使用してログイン構成を作成する必要があります。

Workforce Identity プールのログイン構成を作成するには、 Workforce Identity 連携の一時トークンを取得するの手順に沿って、 gcloud CLI を使用してブラウザベースのログインを作成します。

認証が完了したら、Git コマンドを使用して Secure Source Manager インスタンスを操作できます。Workforce Identity プールのセッション継続時間 が切れたら、再認証する必要があります。

リポジトリのクローンを作成する

次のコマンドを実行して、リポジトリのクローンを作成します。

git clone REPOSITORY_URL

ここで、REPOSITORY_URL は、クローンを作成するリポジトリ ページの上部に表示される HTTPS または SSH URL です。

Developer Connect を使用してクローンを作成する

Developer Connect で Secure Source Manager リポジトリをリンクしている場合は、Developer Connect Git プロキシを使用してリポジトリのクローンを作成できます。Developer Connect を使用したクローン作成では、IAM を使用してリポジトリ アクセスの認証と認可を行います。

始める前に

  1. 手順に沿って、Developer Connect で Secure Source Manager リポジトリへの接続を作成します。
  2. Developer Connect 接続で Git プロキシが有効になっていることを確認します。 Git プロキシを有効にする手順については、Developer Connect プロキシを構成して使用する をご覧ください。
  3. プロキシ URI を使用してクローンを作成する必要があるプリンシパルに、Developer Connect の GitRepositoryLink リソースに対する roles/developerconnect.gitProxyReader ロールを付与します。ロールの付与手順については、 IAM を使用した Developer Connect のアクセス制御 をご覧ください。

Developer Connect の認証情報を設定する

次のコマンドを実行して、Developer Connect 認証ヘルパーをグローバル Git 構成に追加します。

Linux

git config --global credential.'https://*.developerconnect.dev'.helper gcloud.sh

Windows

git config --global credential.https://*.developerconnect.dev.helper gcloud.cmd

プロキシ URI を使用してクローンを作成する

Developer Connect プロキシ URI を使用してリポジトリのクローンを作成するには、次のコマンドを実行します。

git clone https://REGION-git.developerconnect.dev/v1/projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID/gitRepositoryLinks/LINK_ID

次のように置き換えます。

  • REGION: Developer Connect リソースのリージョン。
  • PROJECT_ID: Developer Connect リソースのプロジェクト ID。
  • CONNECTION_ID: Developer Connect 接続の ID。
  • LINK_ID: Developer Connect GitRepositoryLink リソースの ID。

GitRepositoryLink リソースの詳細を表示する手順については、 gcloud developer-connect connections git-repository-links をご覧ください。 list サブコマンドまたは describe サブコマンドを使用して、リンクの詳細を表示できます。

既存のリポジトリを Secure Source Manager に push する

リポジトリに push する前に、リモートとして機能する Secure Source Manager リポジトリを作成する必要があります。

既存の Git リポジトリを空の Secure Source Manager リポジトリに push するには、Secure Source Manager リポジトリをリモートとして追加して push する必要があります。

  1. Secure Source Manager リポジトリをリモートとして設定するには、次のコマンドを実行します。

    git remote add origin REPOSITORY_URL
    

    ここで、REPOSITORY_URL は、リポジトリ ページの上部に表示される HTTPS または SSH URL です。

  2. リポジトリに push するには、次のコマンドを実行します。

    git push -u origin main
    

Git ソースコード管理の詳細については、 Git のドキュメントをご覧ください。

次のステップ