CurrentStack
#security#identity#devops#ci/cd#cloud#automation

GitHub OIDC+Repository Custom Propertiesで作るABAC実装設計

なぜ重要か

GitHub ActionsのOIDCトークンでrepository custom propertiesが扱えるようになると、CI/CD権限管理は「リポジトリ名ベース」から「属性ベース」へ進化できます。これは大規模組織ほど効果が大きい変化です。

同じ技術スタックでも、データ機密度や業務影響が違えば必要な権限は変わります。ABACはその文脈差を扱えます。

RBACだけでは詰まる理由

従来RBACは以下で破綻しがちです。

  • role乱立で追跡不能
  • 命名規則依存で例外が増殖
  • 組織改編時に権限更新が遅れる
  • 緊急対応で恒久例外が残る

ABACは「誰か」だけでなく「どんな属性の変更か」を判定に使えるため、例外を減らせます。

先に属性辞書を決める

IAM条件式を書く前に、属性辞書を固定します。

  • data_class: public/internal/restricted
  • system_tier: tier1/tier2/tier3
  • deployment_scope: sandbox/stage/prod
  • owner_team: 正規化済みチームID
  • change_window: business-hours/24x7

辞書が曖昧だと、ポリシーが読み解けない“呪文”になります。

信頼ポリシーの実装骨格

最低限、以下を検証する条件を入れます。

  • issuer / audience整合
  • workflow identity
  • custom property claim
  • protected branch / environment一致

例として、本番書き込み権限はdeployment_scope=prodかつtier1属性を持ち、承認済みの再利用workflow経由のみ許可、という形です。

属性変更のガバナンス

custom propertiesは権限制御入力なので、変更プロセスも統制対象です。

  • 属性オーナーを定義
  • 変更時に承認履歴を残す
  • 定期attestationを実施
  • 一時属性は期限切れ自動失効

ここが弱いと、ABACは“改ざん可能な自己申告”に落ちます。

開発体験を設計する

正規ルートが遅いと必ず迂回が生まれます。次を用意します。

  • 必須claimを注入済みの再利用workflow
  • 属性不足時の明確なlintエラー
  • 判定結果を見える化するダッシュボード
  • 修正手順テンプレート

セキュリティを「お願い」ではなく「最短経路」にすることが鍵です。

まとめ

OIDC+custom propertiesは、CI/CDを属性駆動の統制モデルへ移す現実的な手段です。属性辞書、変更ガバナンス、開発者向け導線の3点を同時に作り込めば、権限リスクと運用摩擦を同時に下げられます。

おすすめ記事