GitLab CIを利用してSSHキーを安全に管理する

keys on hand

はじめに

プロジェクトではしばしばSSHキーを使用してリモートサーバーにアクセスする必要があります。しかし、これらのキーを安全に管理することは非常に重要です。GitLab CIは、プロジェクトの秘密を安全に管理するための環境変数機能を提供しています。この記事では、GitLabの環境変数にSSHキーを登録し、GitLab CIでキーを成形し、その有効性を確認する方法を示します。

手順

  1. SSHキーの登録: 最初に、GitLabのプロジェクト設定ページにアクセスし、左側のメニューで「CI/CD」を選択します。次に、「Variables」セクションに移動し、「Add Variable」をクリックします。キーとしてDEPLOY_USER_KEYを使用し、値としてSSHプライベートキーをペーストします。

    例:

    -----BEGIN RSA PRIVATE KEY-----
    MIIEpAIBAAKCAQEA3...(中略)...3n59+PBlU9Kl
    -----END RSA PRIVATE KEY-----
  2. キーの成形: 次に、.gitlab-ci.ymlファイルを作成し、以下の内容を追加します。この設定は、登録したSSHキーを成形し、id_rsaファイルに保存します。

    stages:
    - prepare

    create_ssh_key:
    stage: prepare
    script:
    - |
    echo "$DEPLOY_USER_KEY" | python3 -c "
    import sys
    key = sys.stdin.read().strip()
    header = '-----BEGIN RSA PRIVATE KEY-----'
    footer = '-----END RSA PRIVATE KEY-----'
    key_body = key.replace(header, '').replace(footer, '').strip()
    key_body = key_body.replace(' ', '\n')
    print(f'{header}\n{key_body}\n{footer}')" > id_rsa
    only:
    - master

  3. キーの確認: 最後に、キーの有効性を確認するためにssh-keygenコマンドを使用します。

    stages:
    - prepare
    - verify

    create_ssh_key:
    stage: prepare
    script:
    #...(前のステップと同じ)...

    verify_ssh_key:
    stage: verify
    script:
    - ssh-keygen -l -f id_rsa
    only:
    - master

結論

この設定を使用することで、GitLab CIを利用してSSHキーを安全に管理し、その有効性を確認することができます。これにより、プロジェクトのセキュリティを維持しながらリモートサーバーへのアクセスを簡単に管理できます。