จำกัดการเข้าถึง cloud storage จาก IP address ด้วย VPC Service Control

[Cross-posted on blog.niwpopkorn.com] องค์กรที่มีการใช้งาน public cloud นั้น เพราะเห็นข้อดีหลายๆ อย่างของ cloud ทั้งความยืดหยุ่นในการใช้ทรัพยากร การคิดค่าใช้จ่ายตามการใช้งานจริง และไม่ต้องปวดหัวจัดการเรื่องโครงสร้างพื้นฐานเองทั้งหมด     ในแง่ของความปลอดภัยนั้น การเข้าถึงทรัพยากรต่างๆ บน public cloud จะต้องเข้าถึงด้วยสิทธิ์ที่อนุญาตไว้ด้วย Identity Access Management (IAM) ดังนั้น ความปลอดภัยของข้อมูล จะถูกกำหนดจากการตั้งค่า IAM เป็นพื้นฐาน IAM ใช้ในการกำหนดสิทธิ์ว่าใครสามารถเข้าถึง resource อะไรได้บ้าง     ด้วยความเป็น public cloud ที่สามารถเข้าถึงได้จากที่ไหนก็ได้ องค์กรขนาดใหญ่หลายที่จึงมีข้อกำหนดการใช้งานเพิ่มเติม โดยต้องการจำกัดการเข้าถึงทรัพยากรบน cloud จาก network ขององค์กรเท่านั้น นั่นคือ นอกจากจะได้สิทธิ์บน IAM แล้ว การเข้าใช้งานต้องมาจาก IP address ที่กำหนดไว้ล่วงหน้าด้วย ซึ่งเป็นเงื่อนไขที่ช่วยเพิ่มความปลอดภัยอีกชั้น กรณีที่ผู้ไม่หวังดี สามารถเข้าถึง … Continue reading จำกัดการเข้าถึง cloud storage จาก IP address ด้วย VPC Service Control

ทำ dashboard บน Data Studio ให้ผู้ใช้ เห็นข้อมูลบน BigQuery เฉพาะส่วนของตัวเอง

[Cross-posted on blog.niwpopkorn.com] หลายๆ องค์กร มีการใช้งาน BigQuery เป็น data warehouse ที่เก็บข้อมูลส่วนกลางขนาดใหญ่ การออกแบบ data warehouse ให้รองรับการใช้งานจากผู้ใช้หลายกลุ่ม สามารถทำได้หลายวิธี เช่นการกำหนดสิทธิ์ที่ระดับ dataset หรือการสร้าง view เพื่อให้ผู้ใช้ เห็นเฉพาะผลลัพธ์ของ view นั้นๆ โดยไม่สามารถเข้าถึงข้อมูลทั้ง table ได้อีกกรณีหนึ่งก็คือ การทำ dashboard ให้ผู้ใช้แต่ละคนเข้ามาใช้งาน dashboard เดียวกัน แต่ข้อมูลที่แสดงนั้น จะถูกดึงตามผู้ใช้งานที่กำลังเปิด dashboard อยู่ คือเห็นเฉพาะข้อมูลที่เกี่ยวข้องกับตัวเองเท่านั้น วิธีนี้มีข้อดีคือ เราจะสร้างและดูแล dashboard แค่ตัวเดียว โดยที่ผู้ใช้ก็จะเห็นข้อมูลของตัวเองเท่านั้น ไม่เห็นข้อมูลของผู้อื่น ไม่ต้องทำ dashboard แยกสำหรับผู้ใช้แต่ละกลุ่ม หรือแต่ละคนการ implement ในลักษณะนี้ อธิบายได้ด้วยแผนภาพนี้ครับ ในตัวอย่าง เรามีข้อมูลอยู่ 2 table คือ data_by_region (d) เป็นตัวอย่างข้อมูลที่แสดงเคสผู้ป่วย … Continue reading ทำ dashboard บน Data Studio ให้ผู้ใช้ เห็นข้อมูลบน BigQuery เฉพาะส่วนของตัวเอง

การย้ายข้อมูลจาก Google Drive ไป Cloud Storage

[Cross-posted on blog.niwpopkorn.com] Google Drive เป็นพื้นที่เก็บข้อมูลใน cloud ที่ผู้ใช้ทั่วไปสามารถเข้าไป สร้างเอกสาร, upload และแชร์เอกสารให้เพื่อนได้ โดยสะดวก ด้วยความง่าย และมี feature ครอบคลุมการใช้งานทั่วๆ ไป แค่สมัคร account แล้วก็เริ่มใช้งานได้เลย มันจึงเหมาะกับการเป็นที่รับ-ส่ง ไฟล์ แบบเร็วๆ Google Cloud Storage เป็นบริการเก็บข้อมูลบน cloud อีกตัวหนึ่งจาก Google อยู่ในกลุ่มบริการของ Google Cloud Platform ที่มีออกแบบมาสำหรับงานระบบหรือ application ในการใช้งาน Google Cloud Storage นอกจากการสมัคร account แล้ว จะต้องตั้ง project สร้าง bucket ซึ่งต้องตั้งชื่อ เลือก location ของข้อมูล เลือก class ของ storage … Continue reading การย้ายข้อมูลจาก Google Drive ไป Cloud Storage

ตั้งค่าแจ้งเตือนเมื่อข้อมูล Cloud Storage ถูกตั้งค่าเป็นสาธารณะ ด้วย Cloud Monitoring

[Cross-posted on blog.niwpopkorn.com] การใช้งาน Cloud นั้น เป็นการใช้พลังประมวลผล และพื้นที่เก็บข้อมูลอันมหาศาลของผู้ให้บริการ เช่น Google, AWS หรือ Azure โดยมีข้อดีคือ เราสามารถเข้าถึงทรัพยากรเหล่านั้นได้ทันที ไม่ต้องสร้างโครงสร้างพื้นฐานต่างๆ เองทั้งหมด ส่วนเรื่องความปลอดภัยนั้น ผู้ให้บริการแต่ละรายก็มีมาตรฐานสากล และมีการตรวจสอบจากผู้ตรวจสอบภายนอก เพื่อแสดงให้เห็นถึงความปลอดภัยทั้งจากการดำเนินงานของผู้ให้บริการ และมาตรการความปลอดภัยในทุกๆ ขั้นตอนของบริการนั้นๆสิ่งหนึ่งที่ยังเป็นจริงอยู่ก็คือ แม้ว่าบริการนั้นจะปลอดภัยแค่ไหน แต่ถ้าเราเผลอเรอ ตั้งค่าการเข้าถึงไว้หละหลวม ก็มีสิทธิ์ที่ข้อมูลจะรั่วไหลได้เช่นกัน เช่นข่าวนี้ การป้องกันสามารถทำได้โดยการกำหนดสิทธิ์ของผู้ที่เข้าถึงตามความจำเป็น และจำกัดขอบเขต แต่ถึงอย่างนั้น ความผิดพลาดจากการตั้งค่าก็ยังคงเกิดได้อยู่นอกจากแนวทางการระวังไม่ให้เกิดความผิดพลาดขึ้น และการตรวจสอบความผิดปกติจาก log แล้ว การรู้ตัวอย่างรวดเร็วเมื่อเกิดปัญหา ทำให้ปัญหาถูกแก้ไขอย่างรวดเร็ว และจำกัดขอบเขตความเสียหายได้ เป็นอีกแนวทางหนึ่งที่ช่วยให้ผู้ดูแลระบบสามารถรับมือกับปัญหานั้นได้ดียิ่งขึ้นบทความนี้จะยกตัวอย่างการตั้งค่าบน Google Cloud Platform เพื่อแจ้งเตือนทันทีที่มีการ "เปิด" ถังข้อมูลออกสู่สาธารณะ ไม่ว่าจะโดยตั้งใจหรือไม่ ก็ตาม (หากในอนาคตมีระบบที่วัดระดับความตั้งใจของคนได้ ก็เป็นไปได้ที่จะกำหนดเงื่อนไขให้แจ้งเตือนแค่กรณีเผลอเรอด้วยความสะเพร่า)สิ่งที่เราใช้เป็นตัวอย่างเพื่อตรวจสอบ คือ Google Cloud Storage และเหตุการณ์ที่เราจะเฝ้าระวังคือ การเปิดให้ทุกคนเข้าถึงได้ หากตั้งค่าแบบนี้ ก็เท่ากับเปิดให้ทุกคนเข้าถึงข้อมูลบน … Continue reading ตั้งค่าแจ้งเตือนเมื่อข้อมูล Cloud Storage ถูกตั้งค่าเป็นสาธารณะ ด้วย Cloud Monitoring

การทดสอบ SMTP connection กับ G Suite SMTP relay service

[Cross-posted on blog.niwpopkorn.com] ลูกค้า G Suite นอกจากจะได้อีเมลให้ผู้ใช้ในองค์กรแล้ว หากต้องการส่งอีเมลออกจากระบบอื่นๆ เช่น เครื่อง printer หรือ app ภายใน สามารถตั้งค่าให้ส่งผ่าน G Suite SMTP relay service ได้ด้วย โดยไม่ต้องเสีย license user แต่อย่างใดโควต้าที่ Google ให้ลูกค้า G Suite ใช่ส่งอีเมลผ่าน SMTP relay นั้น คือ 130 เท่าของจำนวน G Suite license โดยโควต้านี้จะนับในช่วงเวลา 24 ชม. ตัวอย่างเช่น หากองค์กรของเรามี G Suite user 100 license ก็จะสามารถส่งอีเมลผ่าน SMTP relay ได้ 13,000 ฉบับ … Continue reading การทดสอบ SMTP connection กับ G Suite SMTP relay service

ตั้ง Active Directory แบบไม่ต้องดูแล server เอง ด้วย Managed Service for Microsoft Active Directory

[Cross-posted on blog.niwpopkorn.com] Microsoft Active Directory (MS AD) เป็นบริการจัดเก็บข้อมูลทั้ง user, group, computer และอื่นๆ ที่มีการใช้งานอย่างแพร่หลายในองค์กรขนาดกลางและขนาดใหญ่ ประโยชน์ที่ได้รับคือ องค์กรสามารถจัดการ directory ส่วนกลาง ว่าตอนนี้มีใครได้สิทธิ์อะไรบ้าง รวมถึง policy ต่างๆ ที่จะถูกกระจายไปที่เครื่องปลายทาง เมื่อมีการ join domain เข้ามา ช่วยให้องค์กรสามารถควบคุม policy บนเครื่องผู้ใช้งานได้ ทั้งในแง่ความปลอดภัย (เช่น การสั่งปิดการถ่ายโอนข้อมูลลง usb drive) ความสะดวกและความเป็นมาตรฐานในการใช้งาน (เช่น การสั่งติดตั้ง software พื้นฐานในการทำงาน ให้แต่ละแผนก) และยังสามารถใช้เป็นศูนย์กลาง เพื่อให้ app ต่างๆ ในองค์กร เข้ามาใช้ยืนยันตัวตนผู้ใช้งานได้อีกด้วย     การตั้ง AD server เพื่อใช้งานบน Google Cloud สามารถติดตั้งบน … Continue reading ตั้ง Active Directory แบบไม่ต้องดูแล server เอง ด้วย Managed Service for Microsoft Active Directory

ถ้ามั่นใจว่าใช้ยาว ก็ลดไปเลย 50% ด้วย Committed use discounts

[Cross-posted on blog.niwpopkorn.com] หากองค์กรของเรา มีการใช้งาน Google Cloud Platform ในกลุ่ม Compute Engine อย่างสม่ำเสมอ และคิดว่าจะมี workload อยู่นานเกิน 1 ปีหรือ 3 ปี เราสามารถลดค่าใช้จ่ายที่เกิดขึ้นได้ด้วย Committed use discount resource ที่สามารถลดราคาได้ด้วย Committed use discount มีดังนี้ครับ vCPUs memory GPUs SSDs VMs ใน service ที่จะได้ประโยชน์จาก Committed use discount  จะมี Google Kubernetes Engine Dataproc Compute Engine. หมายความว่า ถ้าเราซื้อ Committed use discount ไว้ใน project หรือ billing account … Continue reading ถ้ามั่นใจว่าใช้ยาว ก็ลดไปเลย 50% ด้วย Committed use discounts

ตรวจสอบการเข้าถึงข้อมูลบน GCP ด้วย Data Access audit log

[Crossed-posted on blog.niwpopkorn.com] การใช้งาน Google Cloud Platform นั้น หากเราต้องการตรวจสอบว่ามีใครเข้ามาทำอะไรกับระบบ หรือเข้ามาทำอะไรกับข้อมูลในระบบบ้าง สามารถตรวจสอบได้จาก Cloud Audit Logs ซึ่งมีข้อมูล log 3 แบบ และระยะเวลาการเก็บ log ดังตารางด้านล่าง Admin Activity เป็น log แสดงการเรียก API หรือการกระทำ ที่เกี่ยวข้องกับการดูแล GCP ที่แก้ไขค่า config หรือ metadata ของ resource ต่างๆ Data Access เป็น log แสดงการอ่านค่า config หรือ metadata ของ resource ต่างๆ รวมถึง การเรียก API ของผู้ใช้ในการ สร้าง แก้ไข อ่าน ข้อมูลที่ผู้ใช้ใส่เข้ามาในระบบ, log ประเภทนี้จะถูกปิดเป็นค่าเริ่มต้น (ยกเว้น … Continue reading ตรวจสอบการเข้าถึงข้อมูลบน GCP ด้วย Data Access audit log

การกำหนด quota บน GCP เพื่อป้องกันการเรียก Maps API เยอะจนตังค์หมด

[Crossed-post on blog.niwpopkorn.com] หากใครที่กำลังพัฒนา application และมีการเรียกใช้งาน Google Maps Platform ที่เป็นบริการให้ข้อมูลด้านแผนที่ เส้นทาง หรือสถานที่ต่างๆ Google มี quota ให้ใช้งานได้ฟรี $200 ทุกเดือน Google ให้ใช้ Maps API ได้ฟรี $200 ทุกเดือน ส่วนที่เกินจาก $200 นั้นจะคิดค้าใช้งานตามจำนวนการเรียกใช้ API ตามรายละเอียดในหน้า Pricing & Plans ตารางราคา Places API ที่คิดค่าใช้จ่ายทุก 1,000 request จุดที่ต้องระวังคือ ระหว่างที่กำลังพัฒนา application อยู่นั้น มีความเป็นไปได้ที่ code ที่ยังเขียนไม่สมบูรณ์ จะมีการเรียกใช้ API เป็นจำนวนมาก (เช่น การวน loop ไปเรื่อยๆ) ทำให้เกิดค่าใช้จ่ายโดยไม่จำเป็น (และไม่รู้ตัว) ค่าใช้จ่ายที่เกิดจากการเรียกใช้ Places API … Continue reading การกำหนด quota บน GCP เพื่อป้องกันการเรียก Maps API เยอะจนตังค์หมด

ออกแบบระบบให้คุยข้าม module กันได้ ด้วย Pub/Sub

[Cross-posted on blog.niwpopkorn.com] เมื่อนานมาแล้ว ผมพัฒนา Apps Script ขึ้นมาตัวหนึ่ง เพื่อดึงข้อมูลจาก Reseller API มาตรวจสอบ หากเข้าเงื่อนไขที่กำหนดไว้ script ก็จะส่งอีเมลแจ้งเตือนไปยังทีมงานที่ดูแลข้อมูลชุดนั้น เมื่อเวลาผ่านไปนานเข้า จำนวนข้อมูลที่ต้องตรวจสอบก็เยอะขึ้น และจำนวนอีเมลที่ต้องส่งแจ้งเตือนออกไปก็มากขึ้นเป็นเงาตามตัว จนถึงขีดจำกัดของ script account ที่ผมใช้รัน script เพื่อดึงข้อมูลจาก Reseller API นั้น เป็น G Suite free editon ซึ่งมีข้อจำกัดในการส่งอีเมลที่ 100 ฉบับต่อวัน ซึ่งในบางวันนั้น จำนวนอีเมลที่ต้องส่งออกก็สูงเกินข้อจำกัดนี้ และการที่ระบบส่งอีเมลไม่ได้ ก็ส่งผลให้ทีมงานที่ทำงานกับอีเมลแจ้งเตือนนี้ ทำงานได้ลำบาก reseller account ที่ใช้ส่งอีเมลแจ้งเตือน มีข้อจำกัดที่ 100 ฉบับต่อวัน ซึ่งไม่พอกับความต้องการ ทางออกที่ก้าวข้ามขีดจำกัดนี้ มีอยู่หลายทาง เช่น การเปลี่ยนวิธีการส่งอีเมล แทนที่จะใช้ email service ของ … Continue reading ออกแบบระบบให้คุยข้าม module กันได้ ด้วย Pub/Sub