mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
Xen Security Modules: Tools.
Signed-off-by: George Coker <gscoker@alpha.ncsc.mil>
This commit is contained in:
1 parent
b1ed041464
commit
d89af62954
40 files changed
+2053
-61
No files matched your search
+23
-3
@@ -1,6 +1,14 @@
|
||||
XEN_ROOT = ../..
|
||||
include $(XEN_ROOT)/tools/Rules.mk
|
||||
|
||||
XEN_SECURITY_MODULE = dummy
|
||||
ifeq ($(FLASK_ENABLE),y)
|
||||
XEN_SECURITY_MODULE = flask
|
||||
endif
|
||||
ifeq ($(ACM_SECURITY),y)
|
||||
XEN_SECURITY_MODULE = acm
|
||||
endif
|
||||
|
||||
.PHONY: all
|
||||
all: build
|
||||
|
||||
@@ -16,9 +24,9 @@ NLSDIR = /usr/share/locale
|
||||
|
||||
.PHONY: build buildpy
|
||||
buildpy:
|
||||
CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py build
|
||||
CC="$(CC)" CFLAGS="$(CFLAGS)" XEN_SECURITY_MODULE="$(XEN_SECURITY_MODULE)" python setup.py build
|
||||
|
||||
build: buildpy refresh-pot refresh-po $(CATALOGS)
|
||||
build: xsm.py buildpy refresh-pot refresh-po $(CATALOGS)
|
||||
|
||||
# NB we take care to only update the .pot file it strings have
|
||||
# actually changed. This is complicated by the embedded date
|
||||
@@ -53,6 +61,18 @@ refresh-po: $(POTFILE)
|
||||
%.mo: %.po
|
||||
$(MSGFMT) -c -o $@ $<
|
||||
|
||||
xsm.py:
|
||||
@(set -e; \
|
||||
echo "XEN_SECURITY_MODULE = \""$(XEN_SECURITY_MODULE)"\""; \
|
||||
echo "from xsm_core import *"; \
|
||||
echo ""; \
|
||||
echo "import xen.util.xsm."$(XEN_SECURITY_MODULE)"."$(XEN_SECURITY_MODULE)" as xsm_module"; \
|
||||
echo ""; \
|
||||
echo "xsm_init(xsm_module)"; \
|
||||
echo "from xen.util.xsm."$(XEN_SECURITY_MODULE)"."$(XEN_SECURITY_MODULE)" import *"; \
|
||||
echo "del xsm_module"; \
|
||||
echo "") >xen/util/xsm/$@
|
||||
|
||||
.PHONY: install
|
||||
ifndef XEN_PYTHON_NATIVE_INSTALL
|
||||
install: LIBPATH=$(shell PYTHONPATH=xen/util python -c "import auxbin; print auxbin.libpath()")
|
||||
@@ -84,4 +104,4 @@ test:
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf build *.pyc *.pyo *.o *.a *~ $(CATALOGS)
|
||||
rm -rf build *.pyc *.pyo *.o *.a *~ $(CATALOGS) xen/util/xsm/xsm.py
|
||||
+18
-1
@@ -44,6 +44,14 @@ acm = Extension("acm",
|
||||
libraries = libraries,
|
||||
sources = [ "xen/lowlevel/acm/acm.c" ])
|
||||
|
||||
flask = Extension("flask",
|
||||
extra_compile_args = extra_compile_args,
|
||||
include_dirs = include_dirs + [ "xen/lowlevel/flask" ] +
|
||||
[ "../flask/libflask/include" ],
|
||||
library_dirs = library_dirs + [ "../flask/libflask" ],
|
||||
libraries = libraries + [ "flask" ],
|
||||
sources = [ "xen/lowlevel/flask/flask.c" ])
|
||||
|
||||
ptsname = Extension("ptsname",
|
||||
extra_compile_args = extra_compile_args,
|
||||
include_dirs = include_dirs + [ "ptsname" ],
|
||||
@@ -51,16 +59,25 @@ ptsname = Extension("ptsname",
|
||||
libraries = libraries,
|
||||
sources = [ "ptsname/ptsname.c" ])
|
||||
|
||||
modules = [ xc, xs, acm, ptsname ]
|
||||
modules = [ xc, xs, ptsname ]
|
||||
if os.uname()[0] == 'SunOS':
|
||||
modules.append(scf)
|
||||
|
||||
if os.environ.get('XEN_SECURITY_MODULE') == 'acm':
|
||||
modules.append(acm)
|
||||
if os.environ.get('XEN_SECURITY_MODULE') == 'flask':
|
||||
modules.append(flask)
|
||||
|
||||
setup(name = 'xen',
|
||||
version = '3.0',
|
||||
description = 'Xen',
|
||||
packages = ['xen',
|
||||
'xen.lowlevel',
|
||||
'xen.util',
|
||||
'xen.util.xsm',
|
||||
'xen.util.xsm.dummy',
|
||||
'xen.util.xsm.flask',
|
||||
'xen.util.xsm.acm',
|
||||
'xen.xend',
|
||||
'xen.xend.server',
|
||||
'xen.xend.xenstore',
|
||||
|
||||
@@ -0,0 +1,139 @@
|
||||
/******************************************************************************
|
||||
* flask.c
|
||||
*
|
||||
* Authors: George Coker, <gscoker@alpha.ncsc.mil>
|
||||
* Michael LeMay, <mdlemay@epoch.ncsc.mil>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2,
|
||||
* as published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <Python.h>
|
||||
#include <xenctrl.h>
|
||||
|
||||
#include <flask_op.h>
|
||||
|
||||
#define PKG "xen.lowlevel.flask"
|
||||
#define CLS "flask"
|
||||
|
||||
#define CTX_LEN 1024
|
||||
|
||||
static PyObject *xc_error_obj;
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD;
|
||||
int xc_handle;
|
||||
} XcObject;
|
||||
|
||||
static PyObject *pyflask_context_to_sid(PyObject *self, PyObject *args,
|
||||
PyObject *kwds)
|
||||
{
|
||||
int xc_handle;
|
||||
char *ctx;
|
||||
char *buf;
|
||||
uint32_t len;
|
||||
uint32_t sid;
|
||||
int ret;
|
||||
|
||||
static char *kwd_list[] = { "context", NULL };
|
||||
|
||||
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "s", kwd_list,
|
||||
&ctx) )
|
||||
return NULL;
|
||||
|
||||
len = strlen(ctx);
|
||||
|
||||
buf = malloc(len);
|
||||
if (!buf) {
|
||||
errno = -ENOMEM;
|
||||
PyErr_SetFromErrno(xc_error_obj);
|
||||
}
|
||||
|
||||
memcpy(buf, ctx, len);
|
||||
|
||||
xc_handle = xc_interface_open();
|
||||
if (xc_handle < 0) {
|
||||
errno = xc_handle;
|
||||
return PyErr_SetFromErrno(xc_error_obj);
|
||||
}
|
||||
|
||||
ret = flask_context_to_sid(xc_handle, buf, len, &sid);
|
||||
|
||||
xc_interface_close(xc_handle);
|
||||
|
||||
free(buf);
|
||||
|
||||
if ( ret != 0 ) {
|
||||
errno = -ret;
|
||||
return PyErr_SetFromErrno(xc_error_obj);
|
||||
}
|
||||
|
||||
return PyInt_FromLong(sid);
|
||||
}
|
||||
|
||||
static PyObject *pyflask_sid_to_context(PyObject *self, PyObject *args,
|
||||
PyObject *kwds)
|
||||
{
|
||||
int xc_handle;
|
||||
uint32_t sid;
|
||||
char ctx[CTX_LEN];
|
||||
uint32_t ctx_len = CTX_LEN;
|
||||
int ret;
|
||||
|
||||
static char *kwd_list[] = { "sid", NULL };
|
||||
|
||||
if ( !PyArg_ParseTupleAndKeywords(args, kwds, "i", kwd_list,
|
||||
&sid) )
|
||||
return NULL;
|
||||
|
||||
xc_handle = xc_interface_open();
|
||||
if (xc_handle < 0) {
|
||||
errno = xc_handle;
|
||||
return PyErr_SetFromErrno(xc_error_obj);
|
||||
}
|
||||
|
||||
ret = flask_sid_to_context(xc_handle, sid, ctx, ctx_len);
|
||||
|
||||
xc_interface_close(xc_handle);
|
||||
|
||||
if ( ret != 0 ) {
|
||||
errno = -ret;
|
||||
return PyErr_SetFromErrno(xc_error_obj);
|
||||
}
|
||||
|
||||
return Py_BuildValue("s", ctx, ctx_len);
|
||||
}
|
||||
|
||||
|
||||
static PyMethodDef pyflask_methods[] = {
|
||||
{ "flask_context_to_sid",
|
||||
(PyCFunction)pyflask_context_to_sid,
|
||||
METH_KEYWORDS, "\n"
|
||||
"Convert a context string to a dynamic SID.\n"
|
||||
" context [str]: String specifying context to be converted\n"
|
||||
"Returns: [int]: Numeric SID on success; -1 on error.\n" },
|
||||
|
||||
{ "flask_sid_to_context",
|
||||
(PyCFunction)pyflask_sid_to_context,
|
||||
METH_KEYWORDS, "\n"
|
||||
"Convert a dynamic SID to context string.\n"
|
||||
" context [int]: SID to be converted\n"
|
||||
"Returns: [str]: Numeric SID on success; -1 on error.\n" },
|
||||
|
||||
{ NULL, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
PyMODINIT_FUNC initflask(void)
|
||||
{
|
||||
Py_InitModule("flask", pyflask_methods);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* c-indent-level: 4
|
||||
* c-basic-offset: 4
|
||||
* End:
|
||||
*/
|
||||
@@ -1,4 +1,4 @@
|
||||
#============================================================================
|
||||
#============================================================================
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of version 2.1 of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation.
|
||||
@@ -23,10 +23,11 @@ import stat
|
||||
import array
|
||||
from xml.dom import minidom, Node
|
||||
from xen.xend.XendLogging import log
|
||||
from xen.util import security, xsconstants, bootloader, mkdir
|
||||
from xen.util import xsconstants, bootloader, mkdir
|
||||
from xen.util.xspolicy import XSPolicy
|
||||
from xen.util.security import ACMError
|
||||
from xen.xend.XendError import SecurityError
|
||||
import xen.util.xsm.acm.acm as security
|
||||
from xen.util.xsm.xsm import XSMError
|
||||
|
||||
ACM_POLICIES_DIR = security.policy_dir_prefix + "/"
|
||||
|
||||
@@ -1240,8 +1241,8 @@ class ACMPolicy(XSPolicy):
|
||||
|
||||
(major, minor) = self.getVersionTuple()
|
||||
hdr_bin = struct.pack(headerformat,
|
||||
ACM_POLICY_VERSION,
|
||||
ACM_MAGIC,
|
||||
ACM_POLICY_VERSION,
|
||||
totallen_bin,
|
||||
polref_offset,
|
||||
primpolcode,
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
import sys
|
||||
|
||||
class XSMError(Exception):
|
||||
def __init__(self,value):
|
||||
self.value = value
|
||||
def __str__(self):
|
||||
return repr(self.value)
|
||||
|
||||
policy_dir_prefix = "";
|
||||
active_policy = "";
|
||||
NULL_SSIDREF = 0;
|
||||
|
||||
def err(msg):
|
||||
"""Raise XSM-dummy exception.
|
||||
"""
|
||||
sys.stderr.write("XSM-dummyError: " + msg + "\n")
|
||||
raise XSMError(msg)
|
||||
|
||||
def on():
|
||||
return 0
|
||||
|
||||
def ssidref2label(ssidref):
|
||||
return 0
|
||||
|
||||
def label2ssidref(label, policy, type):
|
||||
return 0
|
||||
|
||||
def res_security_check(resource, domain_label):
|
||||
return 1
|
||||
|
||||
def get_res_security_details(resource):
|
||||
return ("","","")
|
||||
|
||||
def get_res_label(resource):
|
||||
return ("","")
|
||||
|
||||
def res_security_check_xapi(rlabel, rssidref, rpolicy, xapi_dom_label):
|
||||
return 1
|
||||
|
||||
def parse_security_label(security_label):
|
||||
return ""
|
||||
|
||||
def calc_dom_ssidref_from_info(info):
|
||||
return ""
|
||||
|
||||
def set_security_label(policy, label):
|
||||
return ""
|
||||
|
||||
def ssidref2security_label(ssidref):
|
||||
return ""
|
||||
|
||||
def has_authorization(ssidref):
|
||||
return True
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import sys
|
||||
from xen.lowlevel import flask
|
||||
from xen.xend import sxp
|
||||
|
||||
def err(msg):
|
||||
"""Raise XSM-Flask exception.
|
||||
"""
|
||||
sys.stderr.write("XSM-FlaskError: " + msg + "\n")
|
||||
raise XSMError(msg)
|
||||
|
||||
def on():
|
||||
return 1
|
||||
|
||||
def ssidref2label(ssidref):
|
||||
try:
|
||||
return flask.flask_sid_to_context(ssidref)
|
||||
except:
|
||||
return ""
|
||||
|
||||
def label2ssidref(label, policy, type):
|
||||
try:
|
||||
return flask.flask_context_to_sid(label)
|
||||
except:
|
||||
return ""
|
||||
|
||||
def parse_security_label(security_label):
|
||||
return security_label
|
||||
|
||||
def calc_dom_ssidref_from_info(info):
|
||||
ssidref = label2ssidref(info['security_label'], "", "")
|
||||
return ssidref
|
||||
|
||||
def set_security_label(policy, label):
|
||||
return label
|
||||
|
||||
def ssidref2security_label(ssidref):
|
||||
return ssidref2label(ssidref)
|
||||
@@ -0,0 +1,7 @@
|
||||
import sys
|
||||
import xen.util.xsm.dummy.dummy as dummy
|
||||
|
||||
def xsm_init(self):
|
||||
for op in dir(dummy):
|
||||
if not hasattr(self, op):
|
||||
setattr(self, op, getattr(dummy, op, None))
|
||||
@@ -30,7 +30,6 @@ from xen.xend.PrettyPrint import prettyprintstring
|
||||
from xen.xend.XendConstants import DOM_STATE_HALTED
|
||||
from xen.xend.server.netif import randomMAC
|
||||
from xen.util.blkif import blkdev_name_to_number
|
||||
from xen.xend.XendXSPolicyAdmin import XSPolicyAdminInstance
|
||||
from xen.util import xsconstants
|
||||
|
||||
log = logging.getLogger("xend.XendConfig")
|
||||
@@ -433,7 +432,8 @@ class XendConfig(dict):
|
||||
self['cpu_time'] = dominfo['cpu_time']/1e9
|
||||
if dominfo.get('ssidref'):
|
||||
ssidref = int(dominfo.get('ssidref'))
|
||||
self['security_label'] = XSPolicyAdminInstance().ssidref_to_vmlabel(ssidref)
|
||||
import xen.util.xsm.xsm as security
|
||||
self['security_label'] = security.ssidref2security_label(ssidref)
|
||||
|
||||
self['shutdown_reason'] = dominfo['shutdown_reason']
|
||||
|
||||
@@ -651,7 +651,6 @@ class XendConfig(dict):
|
||||
# ['ssidref', 196611]]
|
||||
policy = ""
|
||||
label = ""
|
||||
policytype = xsconstants.ACM_POLICY_ID
|
||||
for idx in range(0, len(secinfo)):
|
||||
if secinfo[idx][0] == "access_control":
|
||||
for aidx in range(1, len(secinfo[idx])):
|
||||
@@ -659,9 +658,10 @@ class XendConfig(dict):
|
||||
policy = secinfo[idx][aidx][1]
|
||||
if secinfo[idx][aidx][0] == "label":
|
||||
label = secinfo[idx][aidx][1]
|
||||
if label != "" and policy != "":
|
||||
cfg['security_label'] = "%s:%s:%s" % \
|
||||
(policytype, policy, label)
|
||||
import xen.util.xsm.xsm as security
|
||||
cfg['security_label'] = \
|
||||
security.set_security_label(policy, label)
|
||||
if not sxp.child_value(sxp_cfg, 'security_label'):
|
||||
del cfg['security']
|
||||
|
||||
old_state = sxp.child_value(sxp_cfg, 'state')
|
||||
|
||||
@@ -36,7 +36,7 @@ from types import StringTypes
|
||||
import xen.lowlevel.xc
|
||||
from xen.util import asserts
|
||||
from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
|
||||
from xen.xend import balloon, sxp, uuid, image, arch, osdep
|
||||
from xen.xend import XendOptions, XendNode, XendConfig
|
||||
|
||||
@@ -23,7 +23,8 @@ import os
|
||||
|
||||
from xen.util.xmlrpclib2 import stringify
|
||||
from xmlrpclib import dumps, loads
|
||||
from xen.util import security, xsconstants
|
||||
from xen.util import xsconstants
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.xend.XendError import SecurityError
|
||||
|
||||
KB = 1024
|
||||
|
||||
@@ -20,7 +20,8 @@ import logging
|
||||
from xen.xend.XendBase import XendBase
|
||||
from xen.xend.XendError import *
|
||||
from xen.xend.XendXSPolicyAdmin import XSPolicyAdminInstance
|
||||
from xen.util import xsconstants, security
|
||||
from xen.util import xsconstants
|
||||
import xen.util.xsm.xsm as security
|
||||
import base64
|
||||
|
||||
log = logging.getLogger("xend.XendXSPolicy")
|
||||
|
||||
@@ -22,7 +22,8 @@ from xml.dom import minidom, Node
|
||||
|
||||
from xen.xend.XendLogging import log
|
||||
from xen.xend import uuid
|
||||
from xen.util import security, xsconstants, dictio, bootloader
|
||||
from xen.util import xsconstants, dictio, bootloader
|
||||
import xen.util.xsm.acm.acm as security
|
||||
from xen.util.xspolicy import XSPolicy
|
||||
from xen.util.acmpolicy import ACMPolicy
|
||||
from xen.xend.XendError import SecurityError
|
||||
|
||||
@@ -20,7 +20,7 @@ import re
|
||||
import string
|
||||
|
||||
from xen.util import blkif
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.xend.XendError import VmError
|
||||
from xen.xend.server.DevController import DevController
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ import re
|
||||
from xen.xend import XendOptions
|
||||
from xen.xend.server.DevController import DevController
|
||||
from xen.xend.XendError import VmError
|
||||
from xen.util import security
|
||||
from xen.xend.XendXSPolicyAdmin import XSPolicyAdminInstance
|
||||
import xen.util.xsm.xsm as security
|
||||
|
||||
from xen.xend.XendLogging import log
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import os
|
||||
import sys
|
||||
|
||||
from xen.util import dictio
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.util import xsconstants
|
||||
from xen.xm import main as xm_main
|
||||
|
||||
@@ -26,11 +26,11 @@ import os, stat
|
||||
import shutil
|
||||
import string
|
||||
import re
|
||||
from xen.util.security import err
|
||||
from xen.util.security import policy_dir_prefix, xen_title_re
|
||||
from xen.util.security import boot_filename, altboot_filename
|
||||
from xen.util.security import any_title_re, xen_kernel_re, any_module_re
|
||||
from xen.util.security import empty_line_re, binary_name_re, policy_name_re
|
||||
from xen.util.xsm.xsm import err
|
||||
from xen.util.xsm.xsm import policy_dir_prefix, xen_title_re
|
||||
from xen.util.xsm.xsm import boot_filename, altboot_filename
|
||||
from xen.util.xsm.xsm import any_title_re, xen_kernel_re, any_module_re
|
||||
from xen.util.xsm.xsm import empty_line_re, binary_name_re, policy_name_re
|
||||
from xen.util import xsconstants
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.xm import main as xm_main
|
||||
|
||||
@@ -33,7 +33,7 @@ from xen.xend import osdep
|
||||
import xen.xend.XendClient
|
||||
from xen.xend.XendBootloader import bootloader
|
||||
from xen.util import blkif
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.xm.main import serverType, SERVER_XEN_API, get_single_vm
|
||||
|
||||
from xen.xm.opts import *
|
||||
@@ -1221,7 +1221,7 @@ def config_security_check(config, verbose):
|
||||
if verbose:
|
||||
print " %s: PERMITTED" % (resource)
|
||||
|
||||
except security.ACMError:
|
||||
except security.XSMError:
|
||||
print " %s: DENIED" % (resource)
|
||||
(poltype, res_label, res_policy) = security.get_res_label(resource)
|
||||
if not res_label:
|
||||
@@ -1243,7 +1243,7 @@ def create_security_check(config):
|
||||
passed = 1
|
||||
else:
|
||||
print "Checking resources: (skipped)"
|
||||
except security.ACMError:
|
||||
except security.XSMError:
|
||||
sys.exit(-1)
|
||||
|
||||
return passed
|
||||
@@ -1300,7 +1300,7 @@ def main(argv):
|
||||
map(lambda vm_ref: server.xenapi.VM.start(vm_ref, 0), vm_refs)
|
||||
elif not opts.is_xml:
|
||||
if not create_security_check(config):
|
||||
raise security.ACMError(
|
||||
raise security.XSMError(
|
||||
'Security Configuration prevents domain from starting')
|
||||
dom = make_domain(opts, config)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"""Tests the security settings for a domain and its resources.
|
||||
"""
|
||||
import sys
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.xm import create
|
||||
from xen.xend import sxp
|
||||
from xen.xm.opts import OptionError
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
"""Display currently enforced policy (low-level hypervisor representation).
|
||||
"""
|
||||
import sys
|
||||
from xen.util.security import ACMError, err, dump_policy
|
||||
from xen.util.xsm.xsm import XSMError, err, dump_policy
|
||||
from xen.xm.opts import OptionError
|
||||
|
||||
def help():
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"""
|
||||
import sys, os, re
|
||||
from xen.util import dictio
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.util import xsconstants
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.xm import main as xm_main
|
||||
@@ -62,7 +62,7 @@ def get_resource_label(resource):
|
||||
"Please relabel the resource.")
|
||||
print policytype+":"+policy+":"+label
|
||||
else:
|
||||
raise security.ACMError("Resource not labeled")
|
||||
raise security.XSMError("Resource not labeled")
|
||||
|
||||
|
||||
def get_domain_label(configfile):
|
||||
@@ -95,7 +95,7 @@ def get_domain_label(configfile):
|
||||
|
||||
# send error message if we didn't find anything
|
||||
if acline == "":
|
||||
raise security.ACMError("Domain not labeled")
|
||||
raise security.XSMError("Domain not labeled")
|
||||
|
||||
# print out the label
|
||||
(title, data) = acline.split("=", 1)
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
import sys
|
||||
import traceback
|
||||
import string
|
||||
from xen.util.security import ACMError, err, list_labels, active_policy
|
||||
from xen.util.security import vm_label_re, res_label_re, all_label_re
|
||||
from xen.util.xsm.xsm import XSMError, err, list_labels, active_policy
|
||||
from xen.util.xsm.xsm import vm_label_re, res_label_re, all_label_re
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.util.acmpolicy import ACMPolicy
|
||||
from xen.util import xsconstants
|
||||
@@ -78,7 +78,7 @@ def labels(policy, ptype):
|
||||
for label in labels:
|
||||
print label
|
||||
|
||||
except ACMError:
|
||||
except XSMError:
|
||||
sys.exit(-1)
|
||||
except:
|
||||
traceback.print_exc(limit = 1)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"""
|
||||
import sys
|
||||
import traceback
|
||||
from xen.util.security import ACMError, err, load_policy
|
||||
from xen.util.xsm.xsm import XSMError, err, load_policy
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.xm import main as xm_main
|
||||
from xen.util import xsconstants
|
||||
|
||||
+12
-16
@@ -49,7 +49,8 @@ from xen.xend.XendConstants import *
|
||||
from xen.xm.opts import OptionError, Opts, wrap, set_true
|
||||
from xen.xm import console
|
||||
from xen.util.xmlrpcclient import ServerProxy
|
||||
from xen.util.security import ACMError
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.util.xsm.xsm import XSMError
|
||||
from xen.util.acmpolicy import ACM_LABEL_UNLABELED_DISPLAY
|
||||
|
||||
import XenAPI
|
||||
@@ -872,12 +873,7 @@ def parse_doms_info(info):
|
||||
}
|
||||
|
||||
security_label = get_info('security_label', str, '')
|
||||
tmp = security_label.split(":")
|
||||
if len(tmp) != 3:
|
||||
seclabel = ""
|
||||
else:
|
||||
seclabel = security_label
|
||||
parsed_info['seclabel'] = seclabel
|
||||
parsed_info['seclabel'] = security.parse_security_label(security_label)
|
||||
|
||||
if serverType == SERVER_XEN_API:
|
||||
parsed_info['mem'] = get_info('memory_actual', int, 0) / 1024
|
||||
@@ -935,14 +931,14 @@ def xm_brief_list(doms):
|
||||
print format % d
|
||||
|
||||
def xm_label_list(doms):
|
||||
print '%-32s %5s %5s %5s %10s %9s %-8s' % \
|
||||
print '%-40s %3s %5s %5s %10s %9s %-10s' % \
|
||||
('Name', 'ID', 'Mem', 'VCPUs', 'State', 'Time(s)', 'Label')
|
||||
|
||||
output = []
|
||||
format = '%(name)-32s %(domid)5s %(mem)5d %(vcpus)5d %(state)10s ' \
|
||||
'%(cpu_time)8.1f %(seclabel)9s'
|
||||
|
||||
from xen.util import security
|
||||
output = []
|
||||
format = '%(name)-40s %(domid)3s %(mem)5d %(vcpus)5d %(state)10s ' \
|
||||
'%(cpu_time)8.1f %(seclabel)10s'
|
||||
|
||||
import xen.util.xsm.xsm as security
|
||||
|
||||
for dom in doms:
|
||||
d = parse_doms_info(dom)
|
||||
@@ -2580,12 +2576,12 @@ def _run_cmd(cmd, cmd_name, args):
|
||||
print e.usage
|
||||
except XenAPIUnsupportedException, e:
|
||||
err(str(e))
|
||||
except ACMError, e:
|
||||
except XSMError, e:
|
||||
err(str(e))
|
||||
except Exception, e:
|
||||
if serverType != SERVER_XEN_API:
|
||||
from xen.util import security
|
||||
if isinstance(e, security.ACMError):
|
||||
import xen.util.xsm.xsm as security
|
||||
if isinstance(e, security.XSMError):
|
||||
err(str(e))
|
||||
return False, 1
|
||||
print "Unexpected error:", sys.exc_info()[0]
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"""
|
||||
import sys
|
||||
import traceback
|
||||
from xen.util.security import ACMError, err, make_policy
|
||||
from xen.util.xsm.xsm import ACMError, err, make_policy
|
||||
from xen.util import xsconstants
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.xm import main as xm_main
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"""
|
||||
import sys
|
||||
from xen.util import dictio
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.util import xsconstants
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.xm import main as xm_main
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"""
|
||||
import sys, os, re
|
||||
from xen.util import dictio
|
||||
from xen.util import security
|
||||
import xen.util.xsm.xsm as security
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.xm import main as xm_main
|
||||
from xen.xm.main import server
|
||||
@@ -108,7 +108,7 @@ def rm_domain_label(configfile):
|
||||
|
||||
# send error message if we didn't find anything to remove
|
||||
if not removed:
|
||||
raise security.ACMError('Domain not labeled')
|
||||
raise security.XSMError('Domain not labeled')
|
||||
|
||||
# write the data back out to the file
|
||||
fd = open(fil, "wb")
|
||||
|
||||
@@ -26,7 +26,7 @@ import string
|
||||
from xen.util import xsconstants
|
||||
from xen.util.acmpolicy import ACMPolicy
|
||||
from xen.xm.opts import OptionError
|
||||
from xen.util.security import policy_dir_prefix
|
||||
from xen.util.xsm.acm.acm import policy_dir_prefix
|
||||
from xen.xm import main as xm_main
|
||||
from xen.xm.main import server
|
||||
|
||||
|
||||