SlideShare a Scribd company logo
1 of 29
Download to read offline
Getting Memcached Secure
NEC OSS Promotion Center
KaiGai Kohei <kaigai@ak.jp.nec.com>
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 2
Self Introduction
▐ Name KaiGai Kohei
▐ Company NEC, OSS Promotion Center
▐ Works 7 years experiences of OSS development
» SELinux
» PostgreSQL
» Memcached
» Apache (mod_selinux)
▐ Memcached - selinux engine
A memcached plugin to apply mandatory access control
according to the SELinux policy.
1. Memcached and security
Background
Centralized security and SELinux
2. Getting Memcached secure
Adjustment of security model
Engine framework performing with libselinux
The selinux_engine.so plugin
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 4
Recent web-system's architecture
Web servers
RDBMS
Key-Value
store
The Internet
End Users
Web application
Fast, but poor
functionality
Fast, but poor
functionality
Slow, but rich
functionality
Slow, but rich
functionality
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 5
What is Memcached
▐ Memcached
general purpose, high-performance, distributed memory caches
Typically, used to backends of high-traffic web systems
Much faster than RDBMS, but less functionalities
less features
authentication &
access controls
Security
OKOKScript support
badgoodData Integrity
much easiernot easyScaling-out
goodrelatively worsePerformance
badgoodSchemed Data
memcached protocolSQLClient Interface
MemcachedPostgreSQL
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 6
Memcached from security perspective (1/2)
▐ We have few options to keep Memcached secure :-(
Should never allow to connect from external network
SASL authentication
Should never run as root
▐ Memcached Security; by Dustin Sallings
http://dustin.github.com/2010/08/08/memcached-security.html
Memcached
Web Server
Web Apps (1) Firewalling,
always
(1) Firewalling,
always
(2) SASL auth,
if needed
(2) SASL auth,
if needed
(3) Not run as root(3) Not run as root
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 7
Memcached from security perspective (2/2)
▐ Our concern
No protection from internal threats
Buggy application turns an external threats
into an internal threat.
It means all the application must be
FREE from BUGS and VULNERABILITIES!
Memcached
Web Server
Web AppsPerhaps,
vulnerable?
Perhaps,
vulnerable?
Any items
accessible!
Any items
accessible!
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 8
Why server software applies access controls
▐ How reliable is the security feature?
Consistency and Comprehensiveness
▐ Which is more preferable to apply access control?
If each applications apply access control?
Some of them may not be right
Some of them may check nothing...
Access control should be centralized.
Server Application
(Object Manager)
object
object
object
object
Access
Control Authentication
Access
Control
Access
Control
Access
Control
Applications
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 9
More centralized access control (1/2)
Linux kernel
Filesystem
File
FileFile
SELinux
Security
Policy
LSM
System
call
SQL memcached
protocol
PostgreSQL
Table
Schema
Table
Table
SE-PgSQL
Memcached
selinux_engine
Item
Item
Item
Item
Security
Server
Security
Server
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 10
More centralized access control (2/2)
domain of
classified processes
domain of
unclassified processes
inter process
communication channels
Filesystem
classified
information
unclassified
information
Networks
memcached RDBMS
SELinux
Security
Policy
a centralized
security server ie; we don't allow
classified process to write
an object being readable
from unclassified process
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 11
SELinux as a Security Server (1/3)
▐ Interactions with object managers
Kernel subsystems do queries via LSM.
Userspace applications do queries via libselinux.
Both of them control user's requests according to the decision.
▐ Security context as a common identifier
system_u:system_r:memcached_t:s0
system_u:object_r:var_log_t:s0
A short formatted text, independent from object classes.
▐ Security policy
A massive set of access control rules.
A rule describes a set of actions to be allowed on a pair of
a security context of the subject (process being accessing) and
a security context of the object being accessed.
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 12
File X File Y
SELinux as a Security Server (2/3)
▐ Case of Linux Kernel
user process A
staff_u:staff_r:staff_t:s0
user process B
user_u:user_r:user_t:s0
VFS LSM
SELinux
Security
Policy
system_u:object_r:etc_t:s0 user_u:object_r:user_home_t:s0
read(2)read(2)
write(2)write(2)
Linux kernel
ApplicationsSubject: user_u:user_r:user_t:s0
Object: user_u:object_r:user_home_t:s0
Target class: file
Subject: user_u:user_r:user_t:s0
Object: user_u:object_r:user_home_t:s0
Target class: file
file:{getattr read write ...}file:{getattr read write ...}
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 13
Item X Item Y
SELinux as a Security Server (3/3)
▐ Case of Memcached
user process A
staff_u:staff_r:staff_t:s0
user process B
user_u:user_r:user_t:s0
SELinux
Security
Policy
system_u:object_r:system_ro_item_t:s0
user_u:object_r:user_item_t:s0
libselinux
GETGET
SETSET
Linux kernel
Applications
Memcached
Subject: user_u:user_r:user_t:s0
Object: user_u:object_r:user_item_t:s0
Target class: kv_item
Subject: user_u:user_r:user_t:s0
Object: user_u:object_r:user_item_t:s0
Target class: kv_item
selinux_engine.so
Protocol Parser
kv_item:{read write ...}kv_item:{read write ...}
1. Memcached and security
Background
Centralized security and SELinux
2. Getting Memcached secure
Adjustment of security model
Engine framework performing with libselinux
The selinux_engine.so plugin
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 15
Needed features to be enhanced
▐ Memcached needs to get enhanced
1. Facility to retrieve security context of client process
2. Facility to assign security context on key-value item
3. Facility to ask SELinux its access control decision
Item
Item
Item
ProtocolParser
EngineModule
SELinux
Security
Policy
web application
system_u:system_r:user_webapp_t:s0
system_u:system_r:guest_webapp_t:s0
system_u:object_r:memcached_item_t:s0system_u:object_r:memcached_item_t:s0
query
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 16
Security context of the clients
▐ getpeercon(int sockfd, security_context_t *con)
It allows to retrieve security context of the client process
that connected to the server using sockfd.
If UNIX domain socket, no configurations are necessary
If TCP/IP socket, also need to set up labeled IPsec.
▐ Labeled IPsec
It uses an enhanced version of key-exchange daemon
that transfers peer security context during IKE exchanges.
getpeercon(3) enables to retrieve the delivered one.
For more details:
Introduction to Labeled Networking on Linux (Paul Moore, HP)
http://www.linuxfoundation.jp/jp_uploads/seminar20080709/paul_moore-r1.pdf
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 17
Security context of key/value item
▐ SELinux needs key-value item to be labeled
But original hash_item is not designed to store a security context.
▐ Revised data format that allows to point a certain security context
Large number of objects tend to share small number of security contexts
uint32_t nbytes
uint16_t nkey
uint16_t iflag
Key of item
Value of item
hash_item structure
uint16 flags
uint32_t datalen
uint32_t secid
uint16_t keylen
Key of item
Value of item
mchunk_t.item
security context
in text form
mchunk_t.label
uint32_t secid
uint32_t refcount
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 18
memcached - storage engine interface (1/2)
▐ What is the storage engine interface?
An upcoming feature in memcached v1.6.x
It allows a plugin to provide its mechanism to manage key/value pair.
Well designed protocol between the core and engine plugin.
• Some plugins may provide persistent storage support.
• Some plugins may provide access control.
:
Protocol
Parser
storageengine
interface
xxx
plugin
selinux
plugin
SELinux
memcached
memcached
protocol
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 19
memcached - storage engine interface (2/2)
typedef struct engine_interface_v1 {
:
/**
* Retrieve an item.
*
* @param handle the engine handle
* @param cookie The cookie provided by the frontend
* @param item output variable that will receive the located item
* @param key the key to look up
* @param nkey the length of the key
* @param vbucket the virtual bucket id
*
* @return ENGINE_SUCCESS if all goes well
*/
ENGINE_ERROR_CODE (*get)(ENGINE_HANDLE* handle,
const void* cookie,
item** item,
const void* key,
const int nkey,
uint16_t vbucket);
:
}
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 20
Flow-chart in GET command
Protocol
Parser
Storage Engine
Interface
selinux_get()
Storage Engine
Interface
Item exists?
ENGINE_KEY_ENOENT
security_compute_av()
Allowed?
ENGINE_EACCESS
Return the item
ENGINE_SUCCESS
/selinux/access
SELinux
Security
Policy
GET xxx
Client
Application Memcached Kernel
No
No
decision
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 21
selinuxfs and libselinux (1/2)
▐ selinuxfs
A pseudo filesystem as an interface to applications
Eg; write and read on /selinux/access
it asks selinux its access control decision
▐ libselinux
A set of wrapper functions for selinuxfs and configuration files.
Eg; security_getenforce() read /selinux/enforce
Userspace access vector cache
[kaigai@saba ~]$ ls /selinux
access context load reject_unknown
avc/ create member relabel
booleans/ deny_unknown mls status
checkreqprot disable null user
class/ enforce policy_capabilities/
commit_pending_bools initial_contexts/ policyvers
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 22
selinuxfs and libselinux (2/2)
▐ security_compute_av
scon ... security context of the user process
tcon ... security context of the item to be referenced
tclass ... code of object class
required... an obsolete argument
avd ... result shall be set in this structure
It writes scon, tcon and tclass to /selinux/access,
then SELinux returns allowed actions on a pair of them.
extern int security_compute_av(const security_context_t scon,
const security_context_t tcon,
security_class_t tclass,
access_vector_t required,
struct av_decision *avd);
It contains bitmask of
allowed permissions.
It contains bitmask of
allowed permissions.
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 23
Flow-chart in ADD command
Protocol
Parser
Storage Engine
Interface
selinux_allocate()
security_compute_create()
Allowed?
ENGINE_EACCESS
security_compute_av()
ENGINE_SUCCESS
/selinux/create
SELinux
Security
Policy
ADD xxx
Client
Application Memcached Kernel
No
OPERATION_ADD
create a new item
with security context
/selinux/access
selinux_store()
link the new item
to btree-index
Storage Engine
Interface
decision
default
context
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 24
Memcached - selinux engine
▐ To obtain the source code
git clone git://github.com/trondn/memcached.git -b engine
svn co http://sepgsql.googlecode.com/svn/trunk/memcached
▐ Features
Mandatory access control with SELinux policy
Using B+tree index
Persistent storage support
▐ Future works
Waiting for Memcached v1.6.x release :-)
Pushing the package to Fedora project
Scalability improvement
Comprehensive statistical information
Documentations
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 25
Userspace access vector cache (avc)
▐ security_compute_xxx() always invokes a system-call
AVC enables to cache access control decisions recently used.
avc_has_perms()
validation check of
userspace cache
/selinux/status
selinux_kernel_status
mmap(2)
validation check of
userspace cache
reset avc cache
make an avc entry
/selinux/access
/selinux/create
lookup an avc
entry from the cache
check access permissions
SELinux
Security
Policy
invalid
invalidstill valid
not found
stillvalidFound
System
call
System
call
Memory
reference
Memory
reference
DecisionDecision
QueryQuery
In heuristic,
the rate to hit
overs 99.9%
In heuristic,
the rate to hit
overs 99.9%
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 26
Benchmark
▐ Iteration of GET/SET mixture, 8threads-client, 4core server x 2, Gb-ether
▐ Less significant differences in same network environment
default = no access control, selinux = mandatory access control
▐ Penalties in IPsec(AH) communication (~20%?)
0 100000 200000 300000
No IPsec
IPsec(AH)
IPsec(ESP)
number of commands in 30sec
default selinux
0 100000 200000 300000
No IPsec
IPsec(AH)
IPsec(ESP)
number of commands in 30sec
default selinux
251,485251,485
191,409191,409
LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 27
Summary
▐ Why object managers apply access controls
Access control should be centralized
• Consistency
• Coverage
Server is better than applications, Kernel is better than servers.
▐ SELinux as a Security Server
SELinux returns its access control decision,
then object manager control accesses according to the decision.
User and data object need to be identified with security context.
▐ Using libselinux
Libselinux encapsulates raw accesses to selinuxfs.
Userspace access vector cache reduces number of kernel invocations
Any Questions?
Thank you!

More Related Content

What's hot

2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security OverviewShawn Wells
 
Looking into trusted and encrypted keys
Looking into trusted and encrypted keysLooking into trusted and encrypted keys
Looking into trusted and encrypted keysSUSE Labs Taipei
 
Container security
Container securityContainer security
Container securityAnthony Chow
 
MR201406 A Re-introduction to SELinux
MR201406 A Re-introduction to SELinuxMR201406 A Re-introduction to SELinux
MR201406 A Re-introduction to SELinuxFFRI, Inc.
 
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...The Linux Foundation
 
UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...
UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...
UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...Vincent Giersch
 
下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-finalcsdnmobile
 
Container security
Container securityContainer security
Container securityAnthony Chow
 
Secure and Simple Sandboxing in SELinux
Secure and Simple Sandboxing in SELinuxSecure and Simple Sandboxing in SELinux
Secure and Simple Sandboxing in SELinuxJames Morris
 
How secure is your Docker Container pipeline?
How secure is your Docker Container pipeline?How secure is your Docker Container pipeline?
How secure is your Docker Container pipeline?Manideep Konakandla
 
2008 08-12 SELinux: A Key Component in Secure Infrastructures
2008 08-12 SELinux: A Key Component in Secure Infrastructures2008 08-12 SELinux: A Key Component in Secure Infrastructures
2008 08-12 SELinux: A Key Component in Secure InfrastructuresShawn Wells
 
Security in OSGi applications: Robust OSGi Platforms, secure Bundles
Security in OSGi applications: Robust OSGi Platforms, secure BundlesSecurity in OSGi applications: Robust OSGi Platforms, secure Bundles
Security in OSGi applications: Robust OSGi Platforms, secure BundlesKai Hackbarth
 
منصة شليلة
منصة شليلةمنصة شليلة
منصة شليلةssuser81f53f
 
Securing the Infrastructure and the Workloads of Linux Containers
Securing the Infrastructure and the Workloads of Linux ContainersSecuring the Infrastructure and the Workloads of Linux Containers
Securing the Infrastructure and the Workloads of Linux ContainersMassimiliano Mattetti
 
Building Secure OSGi Applications
Building Secure OSGi ApplicationsBuilding Secure OSGi Applications
Building Secure OSGi ApplicationsMarcel Offermans
 
Stop disabling SELinux!
Stop disabling SELinux!Stop disabling SELinux!
Stop disabling SELinux!Maciej Lasyk
 
Security best practices for kubernetes deployment
Security best practices for kubernetes deploymentSecurity best practices for kubernetes deployment
Security best practices for kubernetes deploymentMichael Cherny
 
Evolution of Linux Containerization
Evolution of Linux Containerization Evolution of Linux Containerization
Evolution of Linux Containerization WSO2
 
VxWorks - Holistic Security (Art of Testing)
VxWorks - Holistic Security (Art of  Testing)VxWorks - Holistic Security (Art of  Testing)
VxWorks - Holistic Security (Art of Testing)Aditya K Sood
 

What's hot (20)

System Integrity
System IntegritySystem Integrity
System Integrity
 
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
2009-08-11 IBM Teach the Teachers (IBM T3), Linux Security Overview
 
Looking into trusted and encrypted keys
Looking into trusted and encrypted keysLooking into trusted and encrypted keys
Looking into trusted and encrypted keys
 
Container security
Container securityContainer security
Container security
 
MR201406 A Re-introduction to SELinux
MR201406 A Re-introduction to SELinuxMR201406 A Re-introduction to SELinux
MR201406 A Re-introduction to SELinux
 
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
XPDS16: A Paravirtualized Interface for Socket Syscalls - Dimitri Stiliadis, ...
 
UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...
UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...
UKC - Feb 2013 - Analyzing the security of Windows 7 and Linux for cloud comp...
 
下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final
 
Container security
Container securityContainer security
Container security
 
Secure and Simple Sandboxing in SELinux
Secure and Simple Sandboxing in SELinuxSecure and Simple Sandboxing in SELinux
Secure and Simple Sandboxing in SELinux
 
How secure is your Docker Container pipeline?
How secure is your Docker Container pipeline?How secure is your Docker Container pipeline?
How secure is your Docker Container pipeline?
 
2008 08-12 SELinux: A Key Component in Secure Infrastructures
2008 08-12 SELinux: A Key Component in Secure Infrastructures2008 08-12 SELinux: A Key Component in Secure Infrastructures
2008 08-12 SELinux: A Key Component in Secure Infrastructures
 
Security in OSGi applications: Robust OSGi Platforms, secure Bundles
Security in OSGi applications: Robust OSGi Platforms, secure BundlesSecurity in OSGi applications: Robust OSGi Platforms, secure Bundles
Security in OSGi applications: Robust OSGi Platforms, secure Bundles
 
منصة شليلة
منصة شليلةمنصة شليلة
منصة شليلة
 
Securing the Infrastructure and the Workloads of Linux Containers
Securing the Infrastructure and the Workloads of Linux ContainersSecuring the Infrastructure and the Workloads of Linux Containers
Securing the Infrastructure and the Workloads of Linux Containers
 
Building Secure OSGi Applications
Building Secure OSGi ApplicationsBuilding Secure OSGi Applications
Building Secure OSGi Applications
 
Stop disabling SELinux!
Stop disabling SELinux!Stop disabling SELinux!
Stop disabling SELinux!
 
Security best practices for kubernetes deployment
Security best practices for kubernetes deploymentSecurity best practices for kubernetes deployment
Security best practices for kubernetes deployment
 
Evolution of Linux Containerization
Evolution of Linux Containerization Evolution of Linux Containerization
Evolution of Linux Containerization
 
VxWorks - Holistic Security (Art of Testing)
VxWorks - Holistic Security (Art of  Testing)VxWorks - Holistic Security (Art of  Testing)
VxWorks - Holistic Security (Art of Testing)
 

Viewers also liked

OSS開発勉強会-02
OSS開発勉強会-02OSS開発勉強会-02
OSS開発勉強会-02Kohei KaiGai
 
Odyssey of Ukrainian Entomologist Sergey Paramonov
Odyssey of Ukrainian Entomologist Sergey ParamonovOdyssey of Ukrainian Entomologist Sergey Paramonov
Odyssey of Ukrainian Entomologist Sergey ParamonovValery Korneyev
 
ヨーロッパお勧め観光地
ヨーロッパお勧め観光地ヨーロッパお勧め観光地
ヨーロッパお勧め観光地Kohei KaiGai
 
The Security-Enhanced PostgreSQL - "system wide" consistency in access control
The Security-Enhanced PostgreSQL - "system wide" consistency in access controlThe Security-Enhanced PostgreSQL - "system wide" consistency in access control
The Security-Enhanced PostgreSQL - "system wide" consistency in access controlKohei KaiGai
 
Pedalada Escolar. Normes + Consells
Pedalada Escolar. Normes + ConsellsPedalada Escolar. Normes + Consells
Pedalada Escolar. Normes + ConsellsConsell Verd
 
Bicicleta Pública per a L'H
Bicicleta Pública per a L'HBicicleta Pública per a L'H
Bicicleta Pública per a L'HConsell Verd
 
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)Kohei KaiGai
 

Viewers also liked (7)

OSS開発勉強会-02
OSS開発勉強会-02OSS開発勉強会-02
OSS開発勉強会-02
 
Odyssey of Ukrainian Entomologist Sergey Paramonov
Odyssey of Ukrainian Entomologist Sergey ParamonovOdyssey of Ukrainian Entomologist Sergey Paramonov
Odyssey of Ukrainian Entomologist Sergey Paramonov
 
ヨーロッパお勧め観光地
ヨーロッパお勧め観光地ヨーロッパお勧め観光地
ヨーロッパお勧め観光地
 
The Security-Enhanced PostgreSQL - "system wide" consistency in access control
The Security-Enhanced PostgreSQL - "system wide" consistency in access controlThe Security-Enhanced PostgreSQL - "system wide" consistency in access control
The Security-Enhanced PostgreSQL - "system wide" consistency in access control
 
Pedalada Escolar. Normes + Consells
Pedalada Escolar. Normes + ConsellsPedalada Escolar. Normes + Consells
Pedalada Escolar. Normes + Consells
 
Bicicleta Pública per a L'H
Bicicleta Pública per a L'HBicicleta Pública per a L'H
Bicicleta Pública per a L'H
 
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
 

Similar to LCJ2010-KaiGai-Memcached

LCJ2010-KaiGai-sepgsql
LCJ2010-KaiGai-sepgsqlLCJ2010-KaiGai-sepgsql
LCJ2010-KaiGai-sepgsqlKohei KaiGai
 
A generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration systemA generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration systemConference Papers
 
EMC with Mirantis Openstack
EMC with Mirantis OpenstackEMC with Mirantis Openstack
EMC with Mirantis OpenstackEMC
 
IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017Robert Parker
 
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsThe Linux Foundation
 
Ch21 OS
Ch21 OSCh21 OS
Ch21 OSC.U
 
Security on a Container Platform
Security on a Container PlatformSecurity on a Container Platform
Security on a Container PlatformAll Things Open
 
Revolutionizing the cloud with container virtualization
Revolutionizing the cloud with container virtualizationRevolutionizing the cloud with container virtualization
Revolutionizing the cloud with container virtualizationWSO2
 
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Intro to kubernetesElad Hirsch
 
Getting Memcached Secure
Getting Memcached SecureGetting Memcached Secure
Getting Memcached SecureKohei KaiGai
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherSUSE
 
Implementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for IntegrationImplementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for IntegrationKim Clark
 
Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapPatrick Chanezon
 
Creating Secure Applications
Creating Secure Applications Creating Secure Applications
Creating Secure Applications guest879f38
 
Open source security tools for Kubernetes.
Open source security tools for Kubernetes.Open source security tools for Kubernetes.
Open source security tools for Kubernetes.Michael Ducy
 
2008-09-09 IBM Interaction Conference, Red Hat Update for System z
2008-09-09 IBM Interaction Conference, Red Hat Update for System z2008-09-09 IBM Interaction Conference, Red Hat Update for System z
2008-09-09 IBM Interaction Conference, Red Hat Update for System zShawn Wells
 

Similar to LCJ2010-KaiGai-Memcached (20)

LCJ2010-KaiGai-sepgsql
LCJ2010-KaiGai-sepgsqlLCJ2010-KaiGai-sepgsql
LCJ2010-KaiGai-sepgsql
 
A generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration systemA generic log analyzer for auto recovery of container orchestration system
A generic log analyzer for auto recovery of container orchestration system
 
EMC with Mirantis Openstack
EMC with Mirantis OpenstackEMC with Mirantis Openstack
EMC with Mirantis Openstack
 
IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017IBM MQ in containers MQTC 2017
IBM MQ in containers MQTC 2017
 
.net Framework
.net Framework.net Framework
.net Framework
 
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
 
OS_Ch21
OS_Ch21OS_Ch21
OS_Ch21
 
Ch21 OS
Ch21 OSCh21 OS
Ch21 OS
 
OSCh21
OSCh21OSCh21
OSCh21
 
Security on a Container Platform
Security on a Container PlatformSecurity on a Container Platform
Security on a Container Platform
 
Revolutionizing the cloud with container virtualization
Revolutionizing the cloud with container virtualizationRevolutionizing the cloud with container virtualization
Revolutionizing the cloud with container virtualization
 
Intro to kubernetes
Intro to kubernetesIntro to kubernetes
Intro to kubernetes
 
Getting Memcached Secure
Getting Memcached SecureGetting Memcached Secure
Getting Memcached Secure
 
Microsoft private cloud with Cisco and Netapp - Flexpod solution
Microsoft private cloud with Cisco and Netapp -  Flexpod solutionMicrosoft private cloud with Cisco and Netapp -  Flexpod solution
Microsoft private cloud with Cisco and Netapp - Flexpod solution
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
 
Implementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for IntegrationImplementing zero trust in IBM Cloud Pak for Integration
Implementing zero trust in IBM Cloud Pak for Integration
 
Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 Recap
 
Creating Secure Applications
Creating Secure Applications Creating Secure Applications
Creating Secure Applications
 
Open source security tools for Kubernetes.
Open source security tools for Kubernetes.Open source security tools for Kubernetes.
Open source security tools for Kubernetes.
 
2008-09-09 IBM Interaction Conference, Red Hat Update for System z
2008-09-09 IBM Interaction Conference, Red Hat Update for System z2008-09-09 IBM Interaction Conference, Red Hat Update for System z
2008-09-09 IBM Interaction Conference, Red Hat Update for System z
 

More from Kohei KaiGai

20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_HistoryKohei KaiGai
 
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_APIKohei KaiGai
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_countKohei KaiGai
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0Kohei KaiGai
 
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCacheKohei KaiGai
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_IndexKohei KaiGai
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGISKohei KaiGai
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGISKohei KaiGai
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_ProcessingKohei KaiGai
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_OnlineKohei KaiGai
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdwKohei KaiGai
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_FdwKohei KaiGai
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.JapanKohei KaiGai
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_BetaKohei KaiGai
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGaiKohei KaiGai
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStromKohei KaiGai
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdwKohei KaiGai
 

More from Kohei KaiGai (20)

20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History
 
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_count
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0
 
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
 

Recently uploaded

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

LCJ2010-KaiGai-Memcached

  • 1. Getting Memcached Secure NEC OSS Promotion Center KaiGai Kohei <kaigai@ak.jp.nec.com>
  • 2. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 2 Self Introduction ▐ Name KaiGai Kohei ▐ Company NEC, OSS Promotion Center ▐ Works 7 years experiences of OSS development » SELinux » PostgreSQL » Memcached » Apache (mod_selinux) ▐ Memcached - selinux engine A memcached plugin to apply mandatory access control according to the SELinux policy.
  • 3. 1. Memcached and security Background Centralized security and SELinux 2. Getting Memcached secure Adjustment of security model Engine framework performing with libselinux The selinux_engine.so plugin
  • 4. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 4 Recent web-system's architecture Web servers RDBMS Key-Value store The Internet End Users Web application Fast, but poor functionality Fast, but poor functionality Slow, but rich functionality Slow, but rich functionality
  • 5. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 5 What is Memcached ▐ Memcached general purpose, high-performance, distributed memory caches Typically, used to backends of high-traffic web systems Much faster than RDBMS, but less functionalities less features authentication & access controls Security OKOKScript support badgoodData Integrity much easiernot easyScaling-out goodrelatively worsePerformance badgoodSchemed Data memcached protocolSQLClient Interface MemcachedPostgreSQL
  • 6. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 6 Memcached from security perspective (1/2) ▐ We have few options to keep Memcached secure :-( Should never allow to connect from external network SASL authentication Should never run as root ▐ Memcached Security; by Dustin Sallings http://dustin.github.com/2010/08/08/memcached-security.html Memcached Web Server Web Apps (1) Firewalling, always (1) Firewalling, always (2) SASL auth, if needed (2) SASL auth, if needed (3) Not run as root(3) Not run as root
  • 7. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 7 Memcached from security perspective (2/2) ▐ Our concern No protection from internal threats Buggy application turns an external threats into an internal threat. It means all the application must be FREE from BUGS and VULNERABILITIES! Memcached Web Server Web AppsPerhaps, vulnerable? Perhaps, vulnerable? Any items accessible! Any items accessible!
  • 8. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 8 Why server software applies access controls ▐ How reliable is the security feature? Consistency and Comprehensiveness ▐ Which is more preferable to apply access control? If each applications apply access control? Some of them may not be right Some of them may check nothing... Access control should be centralized. Server Application (Object Manager) object object object object Access Control Authentication Access Control Access Control Access Control Applications
  • 9. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 9 More centralized access control (1/2) Linux kernel Filesystem File FileFile SELinux Security Policy LSM System call SQL memcached protocol PostgreSQL Table Schema Table Table SE-PgSQL Memcached selinux_engine Item Item Item Item Security Server Security Server
  • 10. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 10 More centralized access control (2/2) domain of classified processes domain of unclassified processes inter process communication channels Filesystem classified information unclassified information Networks memcached RDBMS SELinux Security Policy a centralized security server ie; we don't allow classified process to write an object being readable from unclassified process
  • 11. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 11 SELinux as a Security Server (1/3) ▐ Interactions with object managers Kernel subsystems do queries via LSM. Userspace applications do queries via libselinux. Both of them control user's requests according to the decision. ▐ Security context as a common identifier system_u:system_r:memcached_t:s0 system_u:object_r:var_log_t:s0 A short formatted text, independent from object classes. ▐ Security policy A massive set of access control rules. A rule describes a set of actions to be allowed on a pair of a security context of the subject (process being accessing) and a security context of the object being accessed.
  • 12. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 12 File X File Y SELinux as a Security Server (2/3) ▐ Case of Linux Kernel user process A staff_u:staff_r:staff_t:s0 user process B user_u:user_r:user_t:s0 VFS LSM SELinux Security Policy system_u:object_r:etc_t:s0 user_u:object_r:user_home_t:s0 read(2)read(2) write(2)write(2) Linux kernel ApplicationsSubject: user_u:user_r:user_t:s0 Object: user_u:object_r:user_home_t:s0 Target class: file Subject: user_u:user_r:user_t:s0 Object: user_u:object_r:user_home_t:s0 Target class: file file:{getattr read write ...}file:{getattr read write ...}
  • 13. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 13 Item X Item Y SELinux as a Security Server (3/3) ▐ Case of Memcached user process A staff_u:staff_r:staff_t:s0 user process B user_u:user_r:user_t:s0 SELinux Security Policy system_u:object_r:system_ro_item_t:s0 user_u:object_r:user_item_t:s0 libselinux GETGET SETSET Linux kernel Applications Memcached Subject: user_u:user_r:user_t:s0 Object: user_u:object_r:user_item_t:s0 Target class: kv_item Subject: user_u:user_r:user_t:s0 Object: user_u:object_r:user_item_t:s0 Target class: kv_item selinux_engine.so Protocol Parser kv_item:{read write ...}kv_item:{read write ...}
  • 14. 1. Memcached and security Background Centralized security and SELinux 2. Getting Memcached secure Adjustment of security model Engine framework performing with libselinux The selinux_engine.so plugin
  • 15. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 15 Needed features to be enhanced ▐ Memcached needs to get enhanced 1. Facility to retrieve security context of client process 2. Facility to assign security context on key-value item 3. Facility to ask SELinux its access control decision Item Item Item ProtocolParser EngineModule SELinux Security Policy web application system_u:system_r:user_webapp_t:s0 system_u:system_r:guest_webapp_t:s0 system_u:object_r:memcached_item_t:s0system_u:object_r:memcached_item_t:s0 query
  • 16. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 16 Security context of the clients ▐ getpeercon(int sockfd, security_context_t *con) It allows to retrieve security context of the client process that connected to the server using sockfd. If UNIX domain socket, no configurations are necessary If TCP/IP socket, also need to set up labeled IPsec. ▐ Labeled IPsec It uses an enhanced version of key-exchange daemon that transfers peer security context during IKE exchanges. getpeercon(3) enables to retrieve the delivered one. For more details: Introduction to Labeled Networking on Linux (Paul Moore, HP) http://www.linuxfoundation.jp/jp_uploads/seminar20080709/paul_moore-r1.pdf
  • 17. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 17 Security context of key/value item ▐ SELinux needs key-value item to be labeled But original hash_item is not designed to store a security context. ▐ Revised data format that allows to point a certain security context Large number of objects tend to share small number of security contexts uint32_t nbytes uint16_t nkey uint16_t iflag Key of item Value of item hash_item structure uint16 flags uint32_t datalen uint32_t secid uint16_t keylen Key of item Value of item mchunk_t.item security context in text form mchunk_t.label uint32_t secid uint32_t refcount
  • 18. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 18 memcached - storage engine interface (1/2) ▐ What is the storage engine interface? An upcoming feature in memcached v1.6.x It allows a plugin to provide its mechanism to manage key/value pair. Well designed protocol between the core and engine plugin. • Some plugins may provide persistent storage support. • Some plugins may provide access control. : Protocol Parser storageengine interface xxx plugin selinux plugin SELinux memcached memcached protocol
  • 19. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 19 memcached - storage engine interface (2/2) typedef struct engine_interface_v1 { : /** * Retrieve an item. * * @param handle the engine handle * @param cookie The cookie provided by the frontend * @param item output variable that will receive the located item * @param key the key to look up * @param nkey the length of the key * @param vbucket the virtual bucket id * * @return ENGINE_SUCCESS if all goes well */ ENGINE_ERROR_CODE (*get)(ENGINE_HANDLE* handle, const void* cookie, item** item, const void* key, const int nkey, uint16_t vbucket); : }
  • 20. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 20 Flow-chart in GET command Protocol Parser Storage Engine Interface selinux_get() Storage Engine Interface Item exists? ENGINE_KEY_ENOENT security_compute_av() Allowed? ENGINE_EACCESS Return the item ENGINE_SUCCESS /selinux/access SELinux Security Policy GET xxx Client Application Memcached Kernel No No decision
  • 21. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 21 selinuxfs and libselinux (1/2) ▐ selinuxfs A pseudo filesystem as an interface to applications Eg; write and read on /selinux/access it asks selinux its access control decision ▐ libselinux A set of wrapper functions for selinuxfs and configuration files. Eg; security_getenforce() read /selinux/enforce Userspace access vector cache [kaigai@saba ~]$ ls /selinux access context load reject_unknown avc/ create member relabel booleans/ deny_unknown mls status checkreqprot disable null user class/ enforce policy_capabilities/ commit_pending_bools initial_contexts/ policyvers
  • 22. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 22 selinuxfs and libselinux (2/2) ▐ security_compute_av scon ... security context of the user process tcon ... security context of the item to be referenced tclass ... code of object class required... an obsolete argument avd ... result shall be set in this structure It writes scon, tcon and tclass to /selinux/access, then SELinux returns allowed actions on a pair of them. extern int security_compute_av(const security_context_t scon, const security_context_t tcon, security_class_t tclass, access_vector_t required, struct av_decision *avd); It contains bitmask of allowed permissions. It contains bitmask of allowed permissions.
  • 23. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 23 Flow-chart in ADD command Protocol Parser Storage Engine Interface selinux_allocate() security_compute_create() Allowed? ENGINE_EACCESS security_compute_av() ENGINE_SUCCESS /selinux/create SELinux Security Policy ADD xxx Client Application Memcached Kernel No OPERATION_ADD create a new item with security context /selinux/access selinux_store() link the new item to btree-index Storage Engine Interface decision default context
  • 24. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 24 Memcached - selinux engine ▐ To obtain the source code git clone git://github.com/trondn/memcached.git -b engine svn co http://sepgsql.googlecode.com/svn/trunk/memcached ▐ Features Mandatory access control with SELinux policy Using B+tree index Persistent storage support ▐ Future works Waiting for Memcached v1.6.x release :-) Pushing the package to Fedora project Scalability improvement Comprehensive statistical information Documentations
  • 25. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 25 Userspace access vector cache (avc) ▐ security_compute_xxx() always invokes a system-call AVC enables to cache access control decisions recently used. avc_has_perms() validation check of userspace cache /selinux/status selinux_kernel_status mmap(2) validation check of userspace cache reset avc cache make an avc entry /selinux/access /selinux/create lookup an avc entry from the cache check access permissions SELinux Security Policy invalid invalidstill valid not found stillvalidFound System call System call Memory reference Memory reference DecisionDecision QueryQuery In heuristic, the rate to hit overs 99.9% In heuristic, the rate to hit overs 99.9%
  • 26. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 26 Benchmark ▐ Iteration of GET/SET mixture, 8threads-client, 4core server x 2, Gb-ether ▐ Less significant differences in same network environment default = no access control, selinux = mandatory access control ▐ Penalties in IPsec(AH) communication (~20%?) 0 100000 200000 300000 No IPsec IPsec(AH) IPsec(ESP) number of commands in 30sec default selinux 0 100000 200000 300000 No IPsec IPsec(AH) IPsec(ESP) number of commands in 30sec default selinux 251,485251,485 191,409191,409
  • 27. LinuxCon Japan/Tokyo 2010 - Memcached getting securePage 27 Summary ▐ Why object managers apply access controls Access control should be centralized • Consistency • Coverage Server is better than applications, Kernel is better than servers. ▐ SELinux as a Security Server SELinux returns its access control decision, then object manager control accesses according to the decision. User and data object need to be identified with security context. ▐ Using libselinux Libselinux encapsulates raw accesses to selinuxfs. Userspace access vector cache reduces number of kernel invocations