ケ・セラ・セラ

妄想とか備忘録とか思いつくまま

最初に追加しておくplugin(棚卸し)

最初に追加しておくplugin - ケ・セラ・セラ(仮)であげていた導入Pluginの棚卸し。

システム構築している間に代替手段で使わなくなったり逆に必要になって追加したものがあるので公式運用環境構築リストとしてアップデート。

今の所こんな感じですね。

Build Pipeline | Jenkins pluginはVer2系の標準パイプラインで実現したので未導入。

Jenkinsのレルムを「全員に許可」から「ログイン済みユーザーに許可」にするとJobcopy-builderが失敗するのですね

ちゃんと教えてくれてます。 

f:id:kittantan:20201010225215p:plain

WindowsなのでSYSTEMユーザーで動くのですけどログインユーザーではないのでanonymousで実行。コンフィグレーション変更する権限がないのでエラーってことなんだと。

レルムを全員に許可の時はエラーならないのは誰でもなんでもありだから。

ユースケース的にJenkinsユーザー登録はメンテナーのみにしたくて、申告者はログインなしでビルド(申告行為)ができるようにしたいんですよね。

コンソールメッセージのリンク先にある

Authorize Project | Jenkins plugin

でエラーになるJOBだけJenkinsの実行ユーザーを変更するといけるようになるのかな?未だ試してない。

Jenkinsのセキュリティを一旦OFFにしてみる(設定編)

訳あって苦手なWindows10環境です。Jenkins 2.249.1msiインストーラでインストールした環境。サービス起動というかjenkins.warに対してのsystem propertyを追加設定。

  • 設定ファイル
    C:\Program Files\Jenkins\jenkins.xml
  • <arguments></arguments>に以下を追加
    -Dhudson.model.DirectoryBrowserSupport.CSP=
    -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

1つ目はContentsSecurityPolicyを空設定にしてるので、HTMLPublisherPluginの成果物ページ(作ってるシステムの申告状況一覧)でjavascript読み込み放題・動かし放題に。おそらく背景画像とはCSSとかもゆるくなってるはず(今のユースケースでは試してないのでわからない)。

2つ目で認証なし・TokenなしでRemoteAccessAPI経由でビルドしたり色々叩ける状態に。申告状況一覧から取り消しボタン経由でXMLHttpRequest使ってhttp POSTで削除JOBが走るように。

 

それにしてもいくらイントラ内といえどザル過ぎてこのまま運用は心配も。

JOB実行(申告操作)ステップ削減の操作性とセキュリティのバランス、ユーザー管理のバランスからストラテジー考えて運用しないとな、などと思ったのでした。

 ちなみに2つ目はUpgrading to Jenkins LTS 2.222.xに非サポートオプションと書かれてていつ使えなくなってもおかしくないからいずれcrumbsで認証できるようにしないとだろうな。

 

Jenkinsのセキュリティを一旦OFFにしてみる(調査編)

Jenkinsを利用して、ビルド=申告行為とするなんちゃって申請システム。

若手のお勉強素材とする目的もあって、申請データはDB化すらしてなくてCSVファイルでほそんしています。アクセス競合はエグゼキューター数制限でごまかしw

で、HTML Publisher Pluginで申告状況の一覧をWeb UIで見れる様にしてて、jQueryの”csvToTable”などを使ってみてる訳ですが、セキュリティ周りで色々トラップ壁に出くわした訳です。

以前、比較的集中的にJenkinsサーバのセットアップ関連を触っていたのはもう10年近く前にもなるので、ネットワークアクセス(CSRF対策)やAjax(CSP関連)周りのセキュリティはさほど気にすることはなかった(ユーザー認証はもちろんありました)ので、その時の気を頼りに色々やってるとハマるハマる。で、大方の原因がセキュリティ関連に収斂してきてるのです。

ハマったこと

  • jQueryロードできない
  • javascript動かない
  • JOBのtokenでRemoteAccessAPIでJOB起動できない

などなど。

Webを徘徊して断片的にいろいろな情報を得て試しては期待通りにならなくて萎えるをひたすらくりかえしてたのですが、基本に立ち返り公式ドキュメントを覚悟決めて読み漁ってると大方以下の2ページとその子ページに集約されている感じ。

www.jenkins.io

www.jenkins.io

機能整備してて動作確認するとき、自作部分が悪いのかセキュリティが影響しているのか逐一確認してると思考が途絶えてしまうので、開発中は一旦セキュリティをザルOFFにして、機能成立確認できてから影響を見極めつつできるだけ締めていこうとしてます。

 

長くなったので、設定は次の記事で。

Windows on MacなIMEのON/OFF

なんとも今更?なタイトルです(^^ゞ

自宅にはWindowsデスクトップ機とMacBookProがあって、後者ではParallelsでWindows10を動かしてるのですが、用途は主にWindows専用アプリを動かすくらいだったので頻繁に英数・かなを切り替えることもなくいままで放置してたのです。

JenkinsJOB作ってたりスクリプト書き始めたりするとコメント入力もするので、頻繁に切り替えすることになるわけですが、そこでイラッときてしまったわけですね、はい。

※Jenkins環境自体をMacにすりゃいいじゃんって話ではなくて、そちらにはWinオンリーな縛りがあるのです。

ぐぐると当然のように先人の皆様が色々したためて頂いていてありがたく知恵を拝借しました。

Boot Camp の Windows 10 で「英数」「かな」キーでの入力切替を行えるようにする方法。 | PC&IT ~i-TSUNAGU~

BootCampでMS-IMEと、私の環境とは違うのですけど(IMEGoogle日本語です)、IMEキーバインド変更で行けそうってことでやってみました。

  1. タスクバーの日本語入力アイコンを右クリックして「プロパティ」選択
  2. キー設定の選択で「編集」をクリック
    f:id:kittantan:20201006133913p:plain

  3. 各モードの「Muhenkan」(Macキーボードの「英数」)のコマンドを軒並み「IMEを無効化」に変更。
    f:id:kittantan:20201006133850p:plain


これでタッチパッドに手を動かすことなく、普段のMacなキー操作でストレスなく日本語変換切り替えできるようになりました。

IME-ONの方はもともとOFFからだとひらがな入力になる設定がされていたので特に何もせず。使っていって不便があったら見直していこう。



JenkinsのContensSecurityPolicyと生成HTMLの自動更新

  • JenkinsのContensSecurityPolicy

www.jenkins.io設定と確認は「Implimentation」に。

「Jenkinsの管理」-「スクリプトコンソール」で設定を変えることで一時的な動作確認ができる。

永続化は、jenkins.xmlに設定。

java -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src 'self';" -jar jenkins.war

おすすめではないけど、自分がやりたいことが機能するのか確認するときは一時的に以下で全解除して、徐々に締めていってセキュリティバランスで適切な設定をもさくするのがよいかも。

ヘッダーの設定を解除します。

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
  • Webページの自動更新

techacademy.jp

別JOBから他のJOBを無効化

ある申請手続きをJOB実行に代替するシステムで、手続き済みの人にはリマインダー通知(メールやチャット)しないようにする仕組みを考えていて調査。

stackoverrun.com

Groovyが良さそう。

Disable Jenkins Job from Another Job - Stack Overflow

申請JOBでリマインダーJOBを無効化して、リマインダー定期実行パイプラインを実行したとき、有効化のままの人(JOB)だけ実行される仕組み。

ワークフロー前段に申請依頼を全員に通知するパイプラインを実行するので、その中で一旦全て有効化しておくのも必要ですね。

ということで「最初に追加しておくplugin」にGroovyプラグインを追加。

そして、Groovy on Windows10のインストール情報。

mebee.info