Upgrade to Pro — share decks privately, control downloads, hide ads and more …

元現場エンジニアが思う「もっとこうしておけばよかった」から学ぶDevSecOps / DevSecOps Best Practices learned from my experiences

ihcomega56
November 05, 2021

元現場エンジニアが思う「もっとこうしておけばよかった」から学ぶDevSecOps / DevSecOps Best Practices learned from my experiences

CloudNative Days Tokyo 2021

ihcomega56

November 05, 2021
Tweet

More Decks by ihcomega56

Other Decks in Technology

Transcript

  1. ݩݱ৔ΤϯδχΞ͕ࢥ͏ ʮ΋ͬͱ͜͏͓͚ͯ͠͹ Α͔ͬͨʯ͔ΒֶͿ %FW4FD0QT +'SPHΑ͜ͳ ԣా໲ಸ 0

  2. 1 Α͜ͳͰ͢ "ZBOB:PLPUB • +'SPHͷσϕϩούʔΞυϘέΠτ • લ৬·Ͱ͸ओʹόοΫΤϯυͷ։ൃ ʢ4*FS ޿ࠂձࣾ ূ݊ελʔτΞοϓʣ

    • 1PLFNPO (Pͷότϧ·ָ͍͡͠ ࠓ೔͸ΞϓϦέʔγϣϯ։ൃऀ໨ઢͰ ͓࿩͠͠·͢ʂ 5XJUUFS !JIDPNFHB
  3. ͍ΘΏΔݱ৔Λ཭Ε σϕϩούʔΞυϘέΠτʹͳͬͯ ૣ೥൒ʂ 2 ʘݱ৔ͷࠒΑΓམͪண͍ͯ෺ࣄΛߟ͑ͨΓʗ ʘݴޠԽͨ͠Γ͢Δ͕࣌ؒ૿͑ͨΑʗ

  4. ʮ͜͏͠Α͏ʯʮ͜Μͳ෩ʹߟ͑Α͏ʯ ͱ೔ʑૌ͍͑ͯ͘தͰࢥ͏ͷͰ͢ 3

  5. ΤϯδχΞͩͬͨࠒ ஌Βͳ͔ͬͨʗग़དྷ͍ͯͳ͔ͬͨ͜ͱ ͬͯ͋Δͳ͊ɾɾɾ 4

  6. ΋ͷͮ͘Γ࣌୅ɺࢲͷϞνϕʔγϣϯ ྑ͍΋ͷΛ࡞Γ͍ͨʂ • ࢓༷ΛͲ͏͢Δ͔͸ߟ͑Δ͜ͱ͕ग़དྷͨ • ΤϯδχΞ૊৫ͷ֎ͱͷڠྗ΋ਐΜͰग़དྷͨ • ʮϚʔέͷϓϩϞʔγϣϯʹ޲͚ͯ͜ͷ೔·Ͱʹ͜ΕΛ༻ҙ͠Α͏ʯ • ʮࣾ಺Ϣʔβʔͷۀ຿Λษڧͯ͠ΑΓ࢖͍΍͍͢΋ͷΛ໨ࢦͦ͏ʯ

    • ΠϯϑϥɺηΩϡϦςΟʹΊͬΆ͏ऑ͔ͬͨ • ۤखҙ͔ࣝΒνϟϨϯδ͢Δ༐ؾ΋খ͘͞ޙճ͠ʹ͔ͨͬͨ͠ • ͦ͜ʹ՝୊ҙࣝΛ࣋ͭࣗ෼ 74࢓ํͳ͍͔ͱఘΊΔࣗ෼ 5
  7. ࢲͷϞνϕʔγϣϯ ࿑຿ ਓࣄ ૯຿ ܦӦ اը ϚʔέςΟϯά Ӧۀ ࣾ֎ͷϢʔβʔ ࣾ಺ͷϢʔβʔ

    σβΠφʔ ϑϩϯτΤϯυ όοΫΤϯυ 2" 43& ηΩϡϦςΟ 
  8. ಛʹηΩϡϦςΟɾɾɾ 7

  9. %FW4FD0QT͸·ͩ·ͩ • %FW0QT͸޿͕ΓΛݟ͓ͤͯΓɺϕετϓϥΫςΟεͷதʹ͸ ʮ΍ͬͯ ݕ౼ͯ͠ ౰ͨΓલʯͱݴ͑Δ΋ͷ΋૿͖͑ͯͨ • ιϑτ΢ΣΞ։ൃͷϥΠϑαΠΫϧͷதʹηΩϡϦςΟΛ૊Έ ࠐΉ%FW4FD0QT͸஫໨ͦ͜ཋͼ͍ͯΔ΋ͷͷ%FW0QTʹൺ΂Δ ͱਁಁ͍ͯ͠ͳ͍

    ։ൃ ӡ༻ ηΩϡ ϦςΟ ˞͜͜Ͱਁಁͱ͸֤ϫʔυ͕஌ΒΕ͍ͯΔ͔ɺ ҙࣝ͞Ε͍ͯΔ͔Ͳ͏͔Ͱͳ͘ɺͦΕΒ͕ ࢦ͢Α͏ͳ಺༰ʹ࣮ࡍऔΓ૊ΜͰ͍Δ͔Ͳ͏͔Λ ݴ͍ͬͯ·͢ɻ 8
  10. ੲͷࣗ෼ΛৼΓฦͬͯɺ μϝͩͬͨϙΠϯτͱ ͦΕʹؔΘΔ%FW4FD0QTͷ ϕετϓϥΫςΟεΛ ݟ͍͖ͯ·͢ʂ 9

  11. աڈͷࣗ෼Ξϯνύλʔϯ ΞϓϦέʔγϣϯͷ࡞Γ͜Έ͕ͦ͜ʮྑ͍΋ͷΛ࡞Δʯ ͷେ෦෼Λ઎ΊΔͱ͍͏ҙࣝΛͲ͔͜Ͱ͍࣋ͬͯͨ • ͲΜͳ࢓༷ʹ͢Δ͔ʁ࢖ͬͨਓͷϑΟʔυόοΫ͸Ͳ͏͔ʁͱ ͍ͬͨ಺༰͕ͦ͜Ϣʔβʔͷମݧʹܨ͕Δͱ͍͏ҙࣝ • σϦόϦʔͷϓϩηε΍ηΩϡϦςΟͷվળ౳͸ʮ΍Βͳ͖Ό ͍͚ͳ͍λεΫʯʮࣗ෼ୡͷ࡞ۀΛָʹ͢Δ΋ͷʯͱ͍͏ҙࣝ 10

  12. ώϯτ̍ Ϣʔβʔʹಧ͘·Ͱ͕ʮྑ͍΋ͷΛ࡞ΔʯͰ͢ ͍΍ɺͦͷޙ΋ଓ͖·͢ 📘ࡢࠓͷࢥ૝΍ख๏ɺͲΕΛͱͬͯ΋ΰʔϧ͸ @@ϢʔβʔʹՁ஋Λಧ͚ଓ͚Δ͜ͱ • ʮԿΛ࡞Δ͔ʯʹՃ͑ͯʮͲ͏ಧ͚Δ͔ʯ΋ϢʔβʔͷͨΊʹ ͋Δ ͦΕ͕݁Ռͱͯ͠ΤϯδχΞͷͨΊʹ΋ͳΔ •

    ૉૣ͞ɾ҆શੑͷ࣮ݱ͕ෆՄܽ • ʮ΍Βͳ͖Ό͍͚ͳ͍ʯ͜ͱͰ͸͋Δ͕ɺྑ͍΋ͷΛಧ͚͍ͨ ͱ͍͏ࢥ͍ʹϓϥεʹಇ͘ͷͰϙδςΟϒʹऔΓ૊΋͏ 11
  13. աڈͷࣗ෼Ξϯνύλʔϯ̎ ࣮ࡍͷ૊৫ͱͯ͠΋ؾ࣋ͪͷ্Ͱ΋ηΩϡϦςΟνʔϜ ͕ࣗ෼ͷνʔϜͷ֎ଆʹ͋ͬͨ • ඞཁͳͱ͖ʹ͓ئ͍Λ͠߹͏ؔ܎ͩͬͨ • ීஈԿΛ͍ͯ͠Δ͔͸͓ޓ͍Α͘஌Βͳ͔ͬͨ • ʮηΩϡϦςΟνʔϜ͕ݴ͏ͳΒେࣄͳΜͩΖ͏ʯ ͱத్൒୺ͳཧղͰݴΘΕͨ͜ͱΛ΍Δ͚ͩͷ࣌΋

    ͋ͬͨ 12 ʘࠓࢥ͑͹ηΩϡϦςΟνʔϜͷํ͔Βʗ ʘาΈد͖ͬͯͯ͘Εͯͨ͜ͱ΋ʜʗ ʘ΋ͬͱίϥϘग़དྷͨͳ͊ʜʗ
  14. ώϯτ̎ ηΩϡϦςΟνʔϜ΋Ұॹʹ΋ͷͮ͘ΓΛ͢Δ஥ؒͰ͢ 📘։ൃɾӡ༻ʹՃ͑ͯηΩϡϦςΟνʔϜͱ΋ڠۀ͢Δ • ͳΔ΂͘ΰʔϧΛڞ༗͠߹͏౒ྗΛ͠Α͏ • େ͖ͳಉ͡ΰʔϧΛ࣋ͭͱ͍͏ҙຯͰͷڞ༗ • ͦΕͧΕͷখ͞ͳΰʔϧΛ͓ޓ͍஌͓ͬͯ͘ͱ͍͏ҙຯͰͷڞ༗ •

    ඞཁͳ͚࣌ͩ࿈བྷ͢ΔͷͰͳ͘ɺීஈ͔Βίϛϡχέʔγϣϯ ΛऔΕΔؔ܎ੑΛங͜͏ • ૊৫ͷߏ଄తʹ೉͍͠৔߹͸Ͳ͏ؤுͬͯ΋ݫ͍͠ɾɾɾ • ಛʹେاۀʹ͓͚Δ ηΩϡϦςΟνʔϜͱͷؔΘΓํͰΦεεϝ΍ ੒ޭྫ͕͋Ε͹ڭ͍͑ͯͩ͘͞ʂ 13
  15. աڈͷࣗ෼Ξϯνύλʔϯ̏ ηΩϡϦςΟ͕෼͔Βͳ͍ɾ೉͍͠ɾා͍ͱࢥ͍ͬͯͨ • ෳࡶͳͷͰઐ໳Ոʹ೚ͤΔ͔͠ͳ͍ؾ͕ͨ͠ • ΋ͪΖΜͳ͍͕͠Ζʹग़དྷͳ͍ͱ͸ࢥ͍ͬͯΔͷͰɺݴΘΕͨ ͜ͱ͸΍͍ͬͯͨ 14

  16. ώϯτ̏ ·ͣ͸෼ղ͠·͠ΐ͏ 📘খ࢝͘͞ΊΔ • ηΩϡϦςΟͷकඋൣғ͸޿͍͕ɺ%FW4FD0QTͰ͸ओʹιϑτ ΢ΣΞͷηΩϡϦςΟΛѻ͏ • ιϑτ΢ΣΞͷηΩϡϦςΟͱݴͬͯ΋औΓ૊ΊΔ׆ಈͷछྨ ͕͍͔ͭ͋͘Δ •

    ·ͣ͸ݱঢ়೺Ѳͱͯ͠ࠓͰ͖͍ͯΔ͜ͱɺͰ͖͍ͯͳ͍͜ͱΛ ࢓෼͚͔ͯΒ࣍ͷΞΫγϣϯΛܾΊΔ 15
  17. ηΩϡϦςΟͷ෼ղ • ΠϯϑϥɺΞϓϦέʔγϣϯɺώϡʔϚϯΤϥʔʜؾʹ͢΂͖ ͜ͱ͸ଟذʹΘͨΔ • ·ͣ͸͢΂ͯΛηΩϡϦςΟ୲౰ʹؙ౤͛ͤͣɺࣗ෼ʹͰ͖Δ ͜ͱΛݟ͚ͭΔͷ͕େࣄ ʮ8IBUBSFUIFMBZFSTPGTFDVSJUZ "DZCFSTFDVSJUZSFQPSUʯ IUUQTHPNJOETJHIUDPNJOTJHIUTCMPHXIBUBSFUIFMBZFSTPGTFDVSJUZ

    16
  18. ιϑτ΢ΣΞͷηΩϡϦςΟ΋৭ʑ • ڴҖϞσϦϯά 5ISFBUNPEFMJOH • ੩తΞϓϦέʔγϣϯηΩϡϦςΟςετ 4"45 • ಈతΞϓϦέʔγϣϯηΩϡϦςΟςετ %"45

    • ιϑτ΢ΣΞίϯϙδγϣϯղੳ 4$" • ϑΝδϯά GV[[JOH • ϖωτϨʔγϣϯςετ ͳͲ 17
  19. աڈͷࣗ෼Ξϯνύλʔϯ̐ ࣗ෼ͷॻ͍ͨίʔυʹؔ৺ͷ΄ͱΜͲΛୣΘΕ͍ͯͨ • ։ൃ޻ఔͰੜΈग़ͨ͠ιʔείʔυͷ੬ऑੑ͕ා͍ • ࣗ෼ʹؔΘΔηΩϡϦςΟͱ͍͑͹4"45΍%"45 18

  20. ώϯτ̐ ੒Ռ෺͸ ࡞ͬͨίʔυͱ࢖͍ͬͯΔίʔυ͔Βग़དྷ͍ͯ·͢ 📘044ͷηΩϡϦςΟνΣοΫΛ͢Δ • ׂҎ্ͷ૊৫͕ιϑτ΢ΣΞ։ൃʹ044Λ࢖͏ͱݴΘΕΔ࣌୅ • 044ͷ΄ͱΜͲ͸ผͷ044ʹґଘ͓ͯ͠ΓσϓϩΠ͢Διϑτ ΢ΣΞʹ͸ࣗ෼ͷ೺Ѳ͍ͯ͠ͳ͍ίʔυ͕େྔʹؚ·ΕΔ •

    4$" ιϑτ΢ΣΞίϯϙδγϣϯղੳ πʔϧΛ࢖͏ 19
  21. ґଘɺͦͷ·ͨґଘ 20 ʮ&YQMPSFZPVS044EFQFOEFODJFT7JTVBMMZʯ IUUQTXXXMJOLFEJODPNQVMTFFYQMPSFZPVSPTTEFQFOEFODJFTWJTVBMMZNJDIBFMNVMMFS

  22. աڈͷࣗ෼Ξϯνύλʔϯ̑ ηΩϡϦςΟΛ։ൃϥΠϑαΠΫϧʹ૊Έࠐ΋͏ͱͯ͠ ͍ͳ͔ͬͨ • ηΩϡϦςΟؔ࿈ͷνΣοΫΛ։ൃͷޙ൒ʹ·ͱΊͯ΍Ζ͏ͱ ͍ͯͨ͠ • ྫ͑͹݄ʹճ࣮ࢪ͢Δͱස౓ΛܾΊΔͱ͔ɺϓϩδΣΫτ͕ མͪண͍ͨΒ࣮ࢪ͢Δͱ͔ɺ։ൃͱ͸ผͷͱ͜ΖͰ΍Ε͹ྑ͍ ͱߟ͍͑ͯͨ

    21
  23. ώϯτ̑ ηΩϡϦςΟνΣοΫɺ౰ͨΓલʹ΍Γ·͠ΐ͏ 📘γϑτϨϑτɾ4%-$΁ͷ૊ΈࠐΈ • ࣗಈԽ͠ɺ$*$%ύΠϓϥΠϯͷதʹ૊ΈࠐΉ • ϦϦʔε௚લʹ·ͱΊͯߦ͏ͱϦϦʔεͷ஗Εʹܨ͕ΔͷͰආ͚Δ • ස౓΍λΠϛϯάΛܾΊΔΑΓɺ։ൃΛਐΊΔͱඞͣ௨ΔΑ͏ʹ͢Δ •

    ͍͟՝୊͕ݟ͔ͭͬͨͱ͖ͷରԠ΋͋Δఔ౓Πϝʔδ͓ͯ͘͠ • ఆྔతͳ݁Ռ ॏେ౓ɺ$744είΞͳͲ ʹԠͨ͡ϧʔϧΛఆΊ͓ͯ͘ • ʮ΍Βͳ͍͜ͱʯΛܾΊΔͷ΋େࣄ • ਓͷ൑அ͸ͳ͘ͳΒͳ͍͕ɺ ͦ͜ʹϦιʔεΛׂͨ͘Ίʹ΋ࣗಈԽ͢Δ 22 $744 $PNNPO7VMOFSBCJMJUZ4DPSJOH4ZTUFN ੬ऑੑΛධՁ͢ΔͨΊͷΦʔϓϯͳۀքඪ४
  24. 4%-$ʹηΩϡϦςΟΛ૊ΈࠐΉ νΣοΫ Ξ΢τ Ϗϧυ ςετ ϦϦʔε σϓϩΠ ڴҖ ϞσϦϯά 4"45

    %"45 ϖϯςετ 4$" ϑΝδϯά 4"45 ϒϥοΫϘοΫε ςετ %"45 ϖϯςετ ϗϫΠτϘοΫε ςετ ϑΝδϯά 4$" 23 શ෦ ͜͜Ͱ΍Δ ʘ·ͣ͸ॻ͍ͨίʔυʹ%"45ʗ ʘͦͯ͠044ʹ4$"ͱ͍͏ʗ ʘॱͰ࢝ΊͯΈͯ͸ʁʗ
  25. ώϯτ্৐ͤ ΞʔςΟϑΝΫτͷ؅ཧɾ׆༻͸ඞਢͰ͢ 📘ಉ͡ιʔείʔυͷϏϧυ͸౓͚ͩ @@౓໨Ҏ߱͸อ؅ͨ͠ΞʔςΟϑΝΫτΛ࢖͏ • 044Λ࢖ͬͨιϑτ΢ΣΞͷ඼࣭୲อͷͨΊ • ඼࣭͕୲อ͞Εͨιϑτ΢ΣΞΛग़ՙ͢ΔͨΊ • ͦͷଞɺϏϧυ࣌ؒͷઅ໿΍όʔδϣϯͷ੾Γସ͑΍͢͞ͳͲ

    ϝϦοτ͸৭ʑ 24
  26. 25 Ϣʔβʔʹಧ͘·Ͱ͕ʮྑ͍΋ͷΛ࡞ΔʯͰ͢ ηΩϡϦςΟνʔϜ΋Ұॹʹ΋ͷͮ͘ΓΛ͢Δ஥ؒͰ͢ ʮηΩϡϦςΟʯڪΕͣʹ·ͣ͸෼ղ͠·͠ΐ͏ ੒Ռ෺͸࡞ͬͨίʔυͱ࢖͍ͬͯΔίʔυ͔Βग़དྷ͍ͯ·͢ ηΩϡϦςΟνΣοΫɺ౰ͨΓલʹ΍Γ·͠ΐ͏ ΞʔςΟϑΝΫτͷ؅ཧɾ׆༻͸ඞਢͰ͢ ώϯτ͓͞Β͍

  27. 26 Ϣʔβʔʹಧ͘·Ͱ͕ʮྑ͍΋ͷΛ࡞ΔʯͰ͢ ηΩϡϦςΟνʔϜ΋Ұॹʹ΋ͷͮ͘ΓΛ͢Δ஥ؒͰ͢ ʮηΩϡϦςΟʯڪΕͣʹ·ͣ͸෼ղ͠·͠ΐ͏ ੒Ռ෺͸࡞ͬͨίʔυͱ࢖͍ͬͯΔίʔυ͔Βग़དྷ͍ͯ·͢ ηΩϡϦςΟνΣοΫɺ౰ͨΓલʹ΍Γ·͠ΐ͏ ΞʔςΟϑΝΫτͷ؅ཧɾ׆༻͸ඞਢͰ͢ ώϯτ͓͞Β͍ ϚΠϯυ ɾ

    ૊৫ ٕज़ ɾ πʔϧ
  28. %FW0QT΋%FW4FD0QT΋ πʔϧΛೖΕͯऴΘΓɺ࡞ۀͱͯ͠औΓ૊Ή͚ͩͷ΋ͷͰ͸ͳ͍ • ૊৫΍ϚΠϯυηοτͷมֵ͔Β࢝·Δ • ༗ࣝऀ͕͍Ε͹վળ͸ਐΉ͕ࣗ෼͸Ͳ͏͔ʁද໘తͳ࡞ۀͷΈ Ͱ͸ͳ͘ਅʹʮ%FW0QT%FW4FD0QTͷܦݧ͋Γ·͢ʯͱݴ͑Δ ͷ͔ʁ 27

  29. ͲͪΒ΋େࣄ • ΋ͪΖΜखΛಈ͔͢͜ͱ͸ΊͪΌͪ͘Όଚ͍ • ʮਅʹʜʯͱ͔ߟ͑ͳͯ͘΋ٕज़͕໨తʹͳ͍ͬͯͯ΋ɺศར ʹͳΕ͹ͦΕ͸࣮֬ʹϓϥε 28

  30. ؾ෇͖͔Β࢝·Δ • Կ͔଍Γͳ͍ͱײ͡Δ৔߹ɺ৽͍͜͠ͱ΍ۤखͳ͜ͱʹ௅ઓ͠ ͍͚ͨͲΠϚΠν౿Έग़ͤͳ͍ͱ͍͏৔߹͸ • ࣗ෼͕ࠓԿʹؔ৺͕͋Δͷ͔ʁԿ͕ग़དྷ͍ͯͳ͍ͷ͔ʁ෼ੳͯ͠ΈΔ • ౿Έग़ͤͳ͍ྖҬɺؔΘΓ͕ബ͍ਓʑ΋େ͖ͳ໨త ओʹϏδωε Λ

    ͱ΋ʹ໨ࢦ͢஥ؒͩͱଊ͑ɺ઀఺Λ୳͢ • ͜ΕΛ৐Γӽ͑ͨΒ۩ମతͳํ๏࿦͕ΑΓͬ͘͠Γ͖ͨΓɺͲ͔͜Β ࢝ΊΔ͔൑அ͠΍͘͢ͳͬͨΓ͢Δ͔΋ʂʁ • ࢲͱશવҧ͏ཱ৔ɾҙݟͷํ͸ͦͷʮҧ͏ͳʙʯͱ͍͏ײ૝΋ ͋Δҙຯؾ෇͖͔΋͠Ε·ͤΜ 29
  31. ؾ෇͖͔Β࢝·Δ 30

  32. ϚΠϯυΛม͑Δͱ͍͏ҙຯͰ΋ ۩ମతͳํ๏Λ஌Δͱ͍͏ҙຯͰ΋ 31

  33. ͨ͘͞Μͷؾ෇͖ʹग़ձ͑ͦ͏ͳ $MPVE/BUJWF%BZT5PLZP👏 32

  34. Ҿ͖ଓָ͖͠ΜͰ͍͖·͠ΐ͏ʂ 33

  35. ϕετϓϥΫςΟε࣮ફͷώϯτ ΢ΣϏφʔ IUUQTKGSPHDPNKBSFTPVSDFTVQDPNJOHXFCJOBST • ͖ͬ͞ग़͖ͯͨʮΞʔςΟϑΝΫτ؅ཧʯʹ͍ͭͯ • ݄೔ʙ ։ൃɾӡ༻ޮ཰ͱηΩϡϦςΟ޲্Λॿ͚Δ ΞʔςΟϑΝΫτ؅ཧ •

    +'SPH 1MBUGPSNʹ͝ڵຯΛ͓࣋ͪͷํ ͋Γ͕ͱ͏͍͟͝·͢ʂ ޲͚ • ݄೔ʙ ͸͡Ίͯͷ +'SPH1MBUGPSN ࠷ޙʹΑΖ͚͠Ε͹ Ξϯέʔτʹ͝ڠྗ͍ͩ͘͞🐸 34
  36. 5IBOLZPV 35 ʘ+'SPHͷϓϩμΫτΛʗ ʘແྉͰ࢖ͬͯΈΔʗ

  37. ˞ ֤Ξϯνύλʔϯ͸࣮࿩Ͱ͕͢ɺ࠷ۙͷ΋ͷ΋͘͢͝ੲͷ΋ͷ΋͋Γ·͢ ͠ɺશͯ͸ࢲͷະख़͞Ώ͑Ͱ͢ɻաڈʹॴଐ͍ͯͨ͠ಛఆͷ૊৫ͷ࿩Ͱ͸ ͋Γ·ͤΜɻ 36

  38. ࢀߟϦϯΫ • 8IJUF1BQFS+'SPH9SBZ4FDVSJUZBOE$PNQMJBODFPGUIF 0QFO4PVSDF 4PGUXBSF%FQFOEFODJFT:PV3FMZPO IUUQTKGSPHDPNXIJUFQBQFSKGSPHYSBZVOJWFSTBMDPNQPOFOU BOBMZTJT • #JOBSZ4PGUXBSF$PNQPTJUJPO"OBMZTJT IUUQTXXXHSBNNBUFDIDPNCJOBSZTPGUXBSFDPNQPTJUJPO

    BOBMZTJTTDB 37