- 認証
- プロジェクトとグループ
- プロジェクトのインポート
- GitLabインスタンスセキュリティ
- GitLab パフォーマンスの監視
- GitLabデータのバックアップ
- GitLab 自己管理のサポート
- GitLab SaaSのサポート
- セルフマネージメントGitLabのAPIとレート制限
- GitLab SaaSのAPIとレート制限
- GitLab トレーニングリソース
GitLab の管理を始めましょう
GitLabの管理を始めましょう。組織とその認証を設定し、GitLabのセキュリティ、監視、バックアップを行います。
認証
認証はインストールをセキュアにするための最初のステップです。
- すべてのユーザーに二要素認証 (2FA) を適用します。自己管理インスタンスには2FAを強く推奨します。
- ユーザーが以下を実行することを確認します:
- 強力でセキュアなパスワードを選択します。可能であれば、パスワード管理システムに保存してください。
- 全員に設定されていない場合は、アカウントの2要素認証(2FA)を有効にしてください。このワンタイムシークレットコードは、たとえパスワードを知られても侵入者を防ぐ追加的な安全策です。
- バックアップメールを追加します。アカウントにアクセスできなくなった場合、GitLabサポートチームが迅速に対応します。
- リカバリーコードを保存または印刷してください。認証デバイスにアクセスできない場合、これらのリカバリーコードを使ってGitLabアカウントにサインインできます。
- プロフィールにSSHキーを追加します。SSHを使って、必要に応じて新しいリカバリーコードを生成することができます。
- 個人アクセストークンを有効にします。2FAを使用する場合、これらのトークンを使用してGitLab APIにアクセスできます。
プロジェクトとグループ
グループとプロジェクトを設定して環境を整理しましょう。
- プロジェクト:ファイルやコードのホームを指定したり、ビジネスカテゴリでイシューを追跡して整理したりできます。
- グループ:ユーザーやプロジェクトをまとめて整理できます。グループを使って、ユーザーやプロジェクトをすばやく割り当てましょう。
- ロール:プロジェクトやグループのユーザーアクセスと可視性を定義します。
グループとプロジェクトの概要をご覧ください。
始めましょう:
その他のリソース
- 複数のアジャイルチームを運営
- LDAPを使用してグループメンバーシップを同期。
- 継承された権限でユーザーアクセスを管理。最大20レベルのサブグループを使用して、チームとプロジェクトを編成。
プロジェクトのインポート
GitHub、Bitbucket、GitLabの別のインスタンスなどの外部ソースからプロジェクトをインポートする必要があるかもしれません。多くの外部ソースはGitLabにインポートすることができます。
- GitLabプロジェクトのドキュメントをレビューしてください。
- プロジェクトのマイグレーションに代わるリポジトリミラーリングを検討しましょう。
- 一般的なマイグレーションパスのドキュメントについては、マイグレーションインデックスをご覧ください。
- インポート/エクスポートAPIを使用して、プロジェクトのエクスポートをスケジュールします。
人気のプロジェクトインポート
これらのデータタイプのマイグレーションについては、GitLabアカウントマネージャーまたはGitLabサポートまでお問い合わせください。
GitLabインスタンスセキュリティ
セキュリティはオンボーディングプロセスの重要な部分です。インスタンスのセキュリティを確保することは、あなたの仕事と組織を守ります。
これは完全なリストではありませんが、これらのステップに従うことで、インスタンスのセキュリティを確保するための確実なスタートを切ることができます。
- Vaultに保存された長いrootパスワードを使用します。
- 信頼できるSSL証明書をインストールし、更新と失効のプロセスを確立します。
- 組織のガイドラインに従ってSSHキーの制限を設定します。
- 新規サインアップを無効にします。
- Eメールによる確認が必要です。
- パスワードの長さ制限の設定、SSOまたはSAMLユーザー管理の設定。
- サインアップを許可する場合、メールドメインを制限します。
- 二要素認証(2FA)を必須とします。
- Git over HTTPS のパスワード認証を無効にします。
- 不明なサインインに対するメール通知を設定します。
- ユーザーおよびIPレート制限の設定。
- Webhookのローカルアクセスを制限します。
- 保護されたパスのレート制限を設定します。
- 通信設定センターからセキュリティ・アラートに登録してください。
- ブログページでセキュリティのベストプラクティスをご確認ください。
GitLab パフォーマンスの監視
基本的なセットアップができたら、GitLabのモニタリングサービスをレビューする準備ができました。PrometheusはGitLabのコアとなるパフォーマンスモニタリングツールです。他のモニタリングソリューション(例えば、ZabbixやNew Relic)とは異なり、PrometheusはGitLabと密接にインテグレーションされており、コミュニティによるサポートも充実しています。
- Prometheusは これらのGitLabメトリクスを取得します。
- GitLabにバンドルされているソフトウェアメトリクスの詳細はこちらをご覧ください。
- PrometheusとそのExporterはデフォルトでオンになっています。しかし、サービスを設定する必要があります。
- GitLabアーキテクチャの詳細についてはこちらをご覧ください。
- なぜアプリケーションパフォーマンスメトリクスが重要なのかをご覧ください。
- Grafana をインテグレーションして、パフォーマンス・メトリクスに基づくビジュアル・ダッシュボードを構築します。
モニタリングの構成要素
- ウェブサーバー:サーバーのリクエストを処理し、他のバックエンド・サービスのトランザクションを促進します。CPU、メモリ、ネットワークIOトラフィックを監視して、このノードの健全性を追跡します。
- Workhorse:メインサーバーからのウェブトラフィックの混雑を緩和します。レイテンシ・スパイクを監視して、このノードの健全性を追跡します。
- Sidekiq:GitLabをスムーズに動かすためのバックグラウンドオペレーションを処理します。このノードの健全性を追跡するために、長い未処理のタスクキューを監視します。
GitLabデータのバックアップ
GitLabはデータを安全に保ち、復元できるバックアップ方法を提供しています。GitLab SaaSデータベースを使用している場合でも、定期的にデータをバックアップすることが重要です。
- バックアップ戦略を決めましょう。
- 毎日バックアップを取るcronジョブを書くことを検討してください。
- 設定ファイルは別途バックアップしてください。
- バックアップから除外するものを決めます。
- バックアップのアップロード先を決めます。
- バックアップの有効期間を制限します。
- テストバックアップと復元を実行します。
- バックアップを定期的に検証する方法を設定します。
GitLabセルフマネージドインスタンスのバックアップ
Linux パッケージでデプロイしたか Helm チャートでデプロイしたかによって、ルーチンは異なります。
Linuxパッケージを使ってインストールした(シングルノードの)GitLabサーバーをバックアップする場合、単一のRakeタスクを使うことができます。
LinuxパッケージやHelmのバリエーションのバックアップについてはこちらをご覧ください。このプロセスはインスタンス全体をバックアップしますが、設定ファイルはバックアップしません。別途バックアップしてください。暗号化キーが暗号化されたデータと一緒に保管されないように、設定ファイルとバックアップアーカイブを別の場所に保管してください。
バックアップのリストア
バックアップをリストアできるのは、作成したGitLabと全く同じバージョンとタイプ(Community Edition/Enterprise Edition)のみです。
- Linuxパッケージ(Omnibus)のバックアップとリストアのドキュメントをレビューしてください。
- Helm Chartのバックアップとリストアのドキュメントをレビューしてください。
GitLab SaaSのバックアップ
GitLabデータベースとファイルシステムのバックアップは24時間ごとに行われ、ローリングスケジュールで2週間保存されます。すべてのバックアップは暗号化されています。
- GitLab SaaSはデータのセキュリティを確保するためにバックアップを作成しますが、これらの方法を使用して自分でデータをエクスポートしたりバックアップしたりすることはできません。
- イシューはデータベースに保存されます。Git自体には保存できません。
- プロジェクトのエクスポートオプションを使うことができます:
-
ファイルエクスポートのアップロードによるグループエクスポートは、その中のプロジェクトをエクスポートしませんが、エクスポートはします:
- エピック
- マイルストーン
- 役員一覧
- ラベル
- 追加アイテム
GitLab SaaSのバックアップについて詳しくは、バックアップFAQページをご覧ください。
別のバックアップ戦略
状況によっては、Rakeタスクによるバックアップが最適な解決策でない場合があります。ここでは、Rakeタスクが機能しない場合に考慮すべき代替策をいくつか紹介します。
オプション1:ファイルシステムのスナップショット
GitLabサーバーにたくさんのGitリポジトリデータがある場合、GitLabバックアップスクリプトが遅すぎると感じるかもしれません。特に、オフサイトにバックアップするときに遅くなることがあります。
Gitリポジトリのデータサイズが200GB程度になると、一般的に遅くなります。この場合、バックアップ戦略の一環としてファイルシステムのスナップショットを使うことを検討するとよいでしょう。例えば、以下のコンポーネントを持つGitLabサーバーを考えてみましょう:
- Linuxパッケージを使用。
-
/var/opt/gitlab
にマウントされたext4ファイルシステムを含むEBSドライブでAWS上にホストされています。
EC2インスタンスは、EBSスナップショットを取得することで、アプリケーションデータのバックアップの要件を満たしています。バックアップには、すべてのリポジトリ、アップロード、PostgreSQLデータが含まれます。
一般的に、仮想化サーバー上でGitLabを実行している場合は、GitLabサーバー全体のVMスナップショットを作成することができます。VMスナップショットでは、サーバーの電源を落とす必要があるのが一般的です。
オプション2:GitLab Geo
GeoはGitLabインスタンスの読み込み専用のローカルインスタンスを提供します。
GitLab GeoはローカルのGitLabノードを使用することでリモートチームの作業効率を高める一方で、ディザスタリカバリソリューションとしても使用することができます。ディザスタリカバリソリューションとしてのGeoの使い方についてはこちらをご覧ください。
Geoはデータベース、Gitリポジトリ、その他いくつかの資産をレプリケートします。レプリケーションの制限についてはこちらをご覧ください。
GitLab 自己管理のサポート
GitLabはセルフマネージドGitLabのサポートを様々なチャネルで提供しています。
- 優先サポート:PremiumとUltimateのセルフマネジメントのお客様には、段階的なレスポンスタイムで優先的にサポートを提供します。優先サポートへのアップグレードについてはこちらをご覧ください。
- ライブアップグレードアシスタンス:本番アップグレード中に、1対1の専門家によるガイダンスを受けることができます。プライオリティ・サポート・プランでは、サポート・チームのメンバーとの定期的なライブ画面共有セッションを受けることができます。
自己管理型GitLabのサポートを受けるには:
- GitLab ドキュメントを使用してセルフサービスサポートをご利用ください。
- コミュニティサポートのためにGitLabフォーラムに参加してください。
- チケットを送信する前に、購読情報を収集してください。
- サポートチケットを送信してください。
GitLab SaaSのサポート
GitLab SaaSをご利用の場合、サポートを受けたり回答を見つけたりできるチャンネルがいくつかあります。
- 優先サポート:GitLab SaaSのGoldとSilverのお客様は、段階的なレスポンスタイムで優先的にサポートを受けることができます。優先サポートへのアップグレードについてはこちらをご覧ください。
- GitLab SaaS 24時間365日モニタリング:サイトの信頼性とプロダクションエンジニアのフルチームが常に稼働しています。多くの場合、あなたがイシューに気づいた時には、すでに誰かがそれを調べています。
GitLab SaaSのサポートを受けるには:
- GitLab Docsにアクセスしてセルフサービスサポートをご利用ください。
- コミュニティサポートのためにGitLabフォーラムに参加してください。
- チケットを送信する前に、購読情報を収集してください。
- サポートチケットを送信
- GitLabのパフォーマンスやサービス中断に関する最新情報は、ステータスページを購読してください。
セルフマネージメントGitLabのAPIとレート制限
レート制限は、DoS攻撃やブルートフォース攻撃を防ぎます。ほとんどの場合、単一の IP アドレスからのリクエストのレートを制限することで、アプリケーションとインフラストラクチャの負荷を減らすことができます。
レート制限はアプリケーションのセキュリティも向上させます。
セルフマネジメントGitLabのレートリミットの設定
デフォルトのレートリミットは、管理エリアから変更することができます。設定の詳細については、管理エリアのページをご覧ください。
- イシュー・レート制限を定義して、ユーザごとに1分あたりのissue作成リクエストの最大数を設定します。
- 認証されていないWebリクエストに対するユーザーおよびIPレート制限を適用します。
- raw エンドポイントのレート制限をレビューします。デフォルトの設定は、未加工のファイルアクセスに対して 1 分あたり 300 リクエストです。
- 6つのアクティブなデフォルトのインポート/エクスポートのレート制限をレビューします。
APIとレート制限の詳細については、APIのページを参照してください。
GitLab SaaSのAPIとレート制限
レートリミットはDoS攻撃やブルートフォース攻撃を防ぎます。IPブロックは通常、GitLab.comが単一のIPアドレスから異常なトラフィックを受信した場合に発生します。システムはレートリミットの設定に基づき、異常なトラフィックを悪意のある可能性があると見なします。
レート制限はアプリケーションのセキュリティも向上させます。
GitLab SaaSのレート制限の設定
デフォルトのレートリミットは、管理エリアから変更することができます。設定の詳細については、管理エリアのページをご覧ください。
- レートリミットのページをレビューします。
- APIとレート制限の詳細については、APIページをお読みください。
GitLab SaaS特有のブロックレスポンスとエラーレスポンス
- 403 forbiddenエラー:すべてのGitLab SaaSリクエストでエラーが発生する場合は、ブロックをトリガーした可能性のある自動プロセスを探してください。より詳しいサポートが必要な場合は、GitLabサポートまでエラーの詳細(影響を受けたIPアドレスを含む)をご連絡ください。
- HAProxy API スロットル:GitLab SaaSは、IPアドレスごとに毎秒10リクエストを超えるAPIリクエストに対してHTTPステータスコード429で応答します。
- 保護されたパスのスロットル:GitLab SaaS は、IP アドレスごとに、1 分間に 10 リクエストを超える保護されたパスでの POST リクエストに対して HTTP ステータスコード 429 で応答します。
- Git とコンテナレジストリの認証禁止に失敗しました:GitLab SaaS は、1 つの IP アドレスから 3 分間に 30 回の認証失敗リクエストを受けた場合、HTTP ステータスコード 403 で 1 時間応答します。
GitLab トレーニングリソース
GitLabの管理方法について詳しく学ぶことができます。
- GitLabフォーラムに参加して、才能あるコミュニティとヒントを交換しましょう。
-
ブログで最新情報をチェック
- リリース
- アプリケーション
- 貢献する者
- ニュース
- イベント
GitLab有料トレーニング
- GitLab教育サービス:GitLabとDevOpsのベストプラクティスについて、専門的なトレーニングコースで学びましょう。コースカタログをご覧ください。
- GitLab技術認定:GitLabとDevOpsの主要スキルにフォーカスした認定オプションをご覧ください。
GitLab 無料トレーニング
- GitLabの基本:GitとGitLabの基礎に関するセルフサービスガイドをご覧ください。
- GitLab Learn:GitLab Learnの体系的なコースで新しいGitLabスキルを学びましょう。
サードパーティトレーニング
- Udemyより手頃な価格でガイド付きのトレーニングを受けるには、UdemyのGitLab CI: Pipelines, CI/CD, and DevOps for Beginnersをご検討ください。
- LinkedIn Learning:LinkedIn Learning のContinuous Delivery with GitLabをチェックしましょう。