Presented on 2023-03-28 情シスSlack4周年・BTAJP1周年記念イベント #BTAJP #BTCONJP https://corp-engr.connpass.com/event/274770/
Youtube: https://youtu.be/OtgXGhpItPY
©2023 Kyash Inc. ©2023 Kyash Inc.情シスSlack4周年・BTAJP1周年記念イベント #BTAJP #BTCONJP2023.03.28Jun Watanabe @rela147010分でつくる社内Webツール
View Slide
©2023 Kyash Inc. ©2023 Kyash Inc.情シスSlack4周年・BTAJP1周年記念イベント #BTAJP #BTCONJP2023.03.28Jun Watanabe @rela147025分でつくる社内Webツール
©2023 Kyash Inc.©2023 Kyash Inc.44ここから先、ほとんど投影しなかった幻の資料です🙇
©2023 Kyash Inc.5Kyash, Inc.
©2023 Kyash Inc.©2023 Kyash Inc.Jun Watanabe@rela147066Kyash, Inc.Information System & Security TeamCorporate Engineering#Sauna #PHP #Okhotsk
©2023 Kyash Inc.©2023 Kyash Inc.77コード書いてますか?
©2023 Kyash Inc.©2023 Kyash Inc.88GAS? Zapier等の自動化?
©2023 Kyash Inc.©2023 Kyash Inc.99もう少し背伸びして社内Webツールを!
©2023 Kyash Inc.©2023 Kyash Inc.1010Kyashでの活用例
©2023 Kyash Inc.Kyashでの活用例プロダクト管理画面11[ 図やグラフ等を入れる範囲 ]上下左右に適度な余白をとることを推奨しますカラムの分け方に合わせてガイドを活用しましょう
©2023 Kyash Inc.Kyashでの活用例オフィスの入退室システム管理12[ 図やグラフ等を入れる範囲 ]上下左右に適度な余白をとることを推奨しますカラムの分け方に合わせてガイドを活用しましょう
©2023 Kyash Inc.Kyashでの活用例PPAP対策ツール13[ 図やグラフ等を入れる範囲 ]上下左右に適度な余白をとることを推奨しますカラムの分け方に合わせてガイドを活用しましょう
©2023 Kyash Inc.Kyashでの活用例Zoomのバーチャル背景作成ツール14[ 図やグラフ等を入れる範囲 ]上下左右に適度な余白をとることを推奨しますカラムの分け方に合わせてガイドを活用しましょう
©2023 Kyash Inc.15今回のゴール1. 社内Webページが公開できているa. 社内メンバーであることが担保できるb. 社外の人から見えないようになっている2. できるだけ運用コストがかからないようにするa. マネージドb. サーバーレスToday’s Goal
©2023 Kyash Inc.16今回の技術スタックBrefServerlessAWSOpenIDProvider1 2 3
©2023 Kyash Inc.17AWS前提条件1. ALBをhttpsで出せるa. Route53とかで適当なDomainが登録できるb. ACMとかでSSL証明書が出せるc. VPCのSubnetからInternetに出れるAWS Conditions※初心者チュートリアルhttps://dev.classmethod.jp/articles/creation_vpc_ec2_for_beginner_1/https://dev.classmethod.jp/articles/aws-web-server-https-for-beginner/
©2023 Kyash Inc.Brefとは? https://bref.sh/AWS LambdaでServerlessフレームワークを使ってPHPアプリケーションを実行させるLambdaはJava、Go、PowerShell、Node.js、C#、Python、Rubyに対応しているPHPは公式では非対応なのでBrefでイチから環境構築を行うAWS LambdaでWebサイトを簡単に作れるツール18$_SERVER['HTTP_X_AMZN_OIDC_DATA']
©2023 Kyash Inc.19Bref前提条件1. Brefが動く2. PHPとComposerが動く3. Serverless Frameworkが動く4. Node.jsが動く5. AWSリソースにアクセスできるBref Conditions※初心者チュートリアルhttps://dev.classmethod.jp/articles/serverless-first-serverlessframework/
©2023 Kyash Inc.20OpenID前提条件1. OpenID Providerが準備できているa. OneLoginとかが...いいんじゃないかな...OpenID Conditions
©2023 Kyash Inc.ライブコーディングcomposer require bref/brefcomposer require firebase/php-jwt./vendor/bref/bref/bref initBrefとphp-jwtの初期設定21
©2023 Kyash Inc.ライブコーディングserverless.ymlservice: アプリ名今回は corp-engrprovider:region: AWSのリージョン今回は ap-northeast-1functions: エンドポイント名今回は webserverlessの設定22
©2023 Kyash Inc.ライブコーディング初回) serverless deploy 2分くらいかかります2回目以降) serverless deploy function --function webデプロイ23
©2023 Kyash Inc.ライブコーディングスキーム: インターネット向けIP address: IPv4VPC,アベイラビリティーゾーン: インターネットに出れるものを設定セキュリティグループ: インバウンドの443を許可リスナー: https (443)ターゲットグループ: Lambda関数に向けたものを用意証明書の設定: 自分のドメインに適した証明書ALBの作成24※初心者チュートリアルhttps://dev.classmethod.jp/articles/alb-route53-acm-build/
©2023 Kyash Inc.ライブコーディングレコードタイプ: Aエイリアス: ONトラフィックのルーティング先: ALBのエイリアスRoute53で証明書対応25
©2023 Kyash Inc.ライブコーディングトリガーを追加トリガーの設定>ALBパス: *LambdaにALBトリガーを追加26
©2023 Kyash Inc.ライブコーディングOpenID Provider側で設定OneLoginの場合Configuration>Login URL: https://example.com/Redirect URI’s: https://example.com/oauth2/idpresponseSSO>Token Endpoint: POSTOpenID Connectの設定27
©2023 Kyash Inc.ライブコーディングアクションの追加>認証認証: OIDC スコープ: 'openid' or ‘openid groups’ ←認可もする場合OneLoginの場合発行者: /oidc/2 認証エンドポイント: /oidc/2/authトークンエンドポイント: /oidc/2/tokenユーザー情報エンドポイント: /oidc/2/meALBにOpenID Connectの設定を入れる28
©2023 Kyash Inc.ライブコーディング$_SERVER['HTTP_X_AMZN_OIDC_DATA']ドット区切りでヘッダのJSON、ペイロード、署名がそれぞれbase64エンコードされているこの時点でペイロードjsonにそれらしき情報が入っているが、まだ検証できていないので信頼しては駄目!OpenID Connectのユーザークレームヘッダを使う29
©2023 Kyash Inc.ライブコーディングphp-jwt::decodepublic-keyのURLはhttps://public-keys.auth.elb.ap-northeast-1.amazonaws.com/{$oidc->kid}$jwt = JWT::decode($oidc, new Key($key, $header->alg));JWTの正当性検証30※公式マニュアルhttps://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-authenticate-users.html
©2023 Kyash Inc.©2023 Kyash Inc.Thank you2023.03.28jun.watanabe @rela147031