Return-Path: X-Original-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-cloudstack-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B6E6CEB00 for ; Tue, 8 Jan 2013 13:30:12 +0000 (UTC) Received: (qmail 84636 invoked by uid 500); 8 Jan 2013 13:30:12 -0000 Delivered-To: apmail-incubator-cloudstack-dev-archive@incubator.apache.org Received: (qmail 84602 invoked by uid 500); 8 Jan 2013 13:30:12 -0000 Mailing-List: contact cloudstack-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cloudstack-dev@incubator.apache.org Delivered-To: mailing list cloudstack-dev@incubator.apache.org Received: (qmail 84589 invoked by uid 99); 8 Jan 2013 13:30:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Jan 2013 13:30:12 +0000 X-ASF-Spam-Status: No, hits=-1.6 required=5.0 tests=RCVD_IN_DNSWL_MED,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: local policy) Received: from [74.125.149.143] (HELO na3sys009aog130.obsmtp.com) (74.125.149.143) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Jan 2013 13:30:04 +0000 Received: from mail-yh0-f71.google.com ([209.85.213.71]) (using TLSv1) by na3sys009aob130.postini.com ([74.125.148.12]) with SMTP ID DSNKUOwfRlKmc+YfR9ok9VazZ3faxW/0dCBF@postini.com; Tue, 08 Jan 2013 05:29:43 PST Received: by mail-yh0-f71.google.com with SMTP id 22so846110yhr.2 for ; Tue, 08 Jan 2013 05:29:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:references:in-reply-to:mime-version:x-mailer :thread-index:date:message-id:subject:to:content-type :x-gm-message-state; bh=t+20p6y8h4eRHuof7MqC2D/NcDjnFhdChfMR5zc3DR4=; b=XJ5qnuiwXMheZTOs/Zz4NELWTYxy/Py3x9c4VR5/H2kZkoP7i8W3rULnpFcaG1FcaL gzK/XNbYfnZ/Je9dJBzduNbwtt9LGeQe+aR5jewVt7G6LFzXoNV6eQG1NxNx8hm1mJdF PRjTh5fw4Q7LWZc3jmn+7v462neOO/lfv9nA/dA8hp8gLhatHbOCUBLpCu4UemYU7xwn m1DBcyGuyNZjziJ89uppIvv/7WJKblybCOCKsr3Qhn8LpzaoMjYV8JnQQC/I4TBl/8ye eVl65ZJSgsnDRGNReQjdQK/tGhKAix0AceOSmgiDiwk8/VIFXvS9G7mrw4n23hjsUzZk Qzxg== X-Received: by 10.224.196.137 with SMTP id eg9mr44014719qab.99.1357651781805; Tue, 08 Jan 2013 05:29:41 -0800 (PST) Received: by 10.224.196.137 with SMTP id eg9mr44014716qab.99.1357651781711; Tue, 08 Jan 2013 05:29:41 -0800 (PST) From: Manikanta Kattamuri References: <8f24a63bd05f81720db9736015de0f3b@mail.gmail.com> <2529883E7B666F4E8F21F85AADA43CA7010C8EB1BDA2@BANPMAILBOX01.citrite.net> <036CF53F-DF75-4245-8D87-E0349FE3ABEA@stratosec.co> In-Reply-To: <036CF53F-DF75-4245-8D87-E0349FE3ABEA@stratosec.co> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 14.0 Thread-Index: AQDVvP2GD8BatP0ZGBcoUgpWkVPaVwKD007nApdoKpABuLtIHQFq1QBWAju1rX2Z2+Z5gA== Date: Tue, 8 Jan 2013 18:59:40 +0530 Message-ID: Subject: RE: [DISCUSS] Cloudstack to manage User objects in LDAP To: cloudstack-dev@incubator.apache.org Content-Type: text/plain; charset=ISO-8859-1 X-Gm-Message-State: ALoCoQkOHh0IG8/YDaAMI0WAc6nV/mnu4KuDsxM4qlFP26Xw4AdhaueAFiLJWhgmt2Xhhv+wRf07vNaGL2eF3Hu6D1GnqeuGAMn1ouqz5o36QF8qA6d8vEZIfH+jqg0y8YyKaCiKB4WAFlG5O1RViX8eubX4Ril+QxDP8EM70ONQRzbsLrmSbkvj0vQfyBlgKFCnmQqc5Jbl X-Virus-Checked: Checked by ClamAV on apache.org Some thoughts on implementation and braindump... (LDAP basically is an example I have taken up, the problem are the same for any other products) Here when we are talking about LDAP are we seeing that to be an LDAP exclusively for ACS or any pre-existing LDAP where user creation can be done from other sources other than ACS? Presently in code the UserManagment operations are coupled with Account and the acl's are given from AccountManager. If we need to introduce any type of usermgmt other than what cs presently has, then we need to de couple the account mgmt and user mgmt as two different services as first step. The UserService will be responsible for user CRUD operation based on the parameters (cs db or LDAP presently). ACS Exclusive LDAP: Make User Mgmt a plugin and implement LDAP adapter for it along with the current CS DB(default). This will be similar to user-authenticators plugin. Shared LDAP(ACS and other apps): With shared LDAP while user mgmt will be similar to exclusive ldap, the CS roles required for authorization are placed in different table than the user table. This would need to be handled differently. 1) If a user is created by a non ACS app: - Roles will not be present in ACS and the user ops will Fail. Options: Where will we get the role info from? If it is present in LDAP should we sync it to CS? Changes to code: Implementation of UserServices and a sync script to map and sync user roles frequently 2) If we move both UserInfo and Roles to LDAP - Will it be good practice to keep specific app ( here ACS) based info(role) in shared LDAP? This will require the other user creation points to know of ACS role parameter...(maybe wrong) Changes Changes to User mgmt. and even to ACL implementation ( which is also part of accountmanager ) We need to figure out up to what level we require LDAP in ACS ( Just user info or even roles). I will get the services decoupled as it looks required in anyway. I personally would want to follow option (2) as it will open up other areas that can be generalized and avoid sync/manual mgmt. This will decouple the code ( new security products ex spring security can be brought in etc... ). Manikanta. -----Original Message----- From: John Kinsella [mailto:jlk@stratosec.co] Sent: Saturday, December 22, 2012 2:07 AM To: cloudstack-dev@incubator.apache.org Subject: Re: [DISCUSS] Cloudstack to manage User objects in LDAP (just catching up on this thread) On Dec 20, 2012, at 6:56 PM, Chip Childers wrote: > We are already talking about more robust RBAC for operations. I can > only assume that the value in doing that will be better realized by > mapping the roles to users. That actually reinforces the user as > being the primary entity involved in Authz/n. We really need to > consider extending the user role assignment to the LDAP target, > instead of just using it for authentication. The same argument for > having a single directory for authentication can be applied to wanting > to use that data for actual permissions. +1 > So if it was written as a plugin (which may not be possible today), > what would be the problem with supporting the actual management of > LDAP objects? It seems like a very natural complement to the existing > LDAP authentication plugins, allowing us to support that third use > case. > > I also really believe that we should take a strong look at figuring > out how to tie the groups that an LDAP user is assigned to the roles > that we should be working to support for functional authorization. Completely concur. We're also looking to have hierarchical support across our systems - one reason this shouldn't be within ACS is if an organization's org tree is different than Account/user. What about Account/department/user? Separation and management of privileges is a pretty big deal to us. An analogy, which may help Koushik and others: AWS has some sort of centralized authentication/authorization system for customer accounts - for the purpose of this discussion, let's say it's LDAP. I'm sure they have wonderful LDAP management systems that do nothing but that. But when I login to the AWS dashboard in a company admin account, I'm able to grant/revoke permissions to individual users, and I suspect those permissions/roles are stored within the LDAP database, not AWS specifically. Another potential use case in the future: when ACS is orchestrating storage or another service directly linked with instances and users, there may be a need to grant access to that service via LDAP (Or whatever centralized auth - AD? :) ) as well. John