arver 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.textile +6 -1
- data/README.textile +55 -60
- data/lib/arver/cli.rb +17 -18
- data/lib/arver/version.rb +1 -1
- data/man/arver.5 +9 -4
- metadata +13 -13
data/CHANGELOG.textile
CHANGED
data/README.textile
CHANGED
@@ -1,53 +1,73 @@
|
|
1
1
|
h1. arver
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
h2. DESCRIPTION:
|
3
|
+
h2. Synopsis
|
6
4
|
|
7
5
|
arver is a tool to manage encrypted harddisks.
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
*
|
33
|
-
|
34
|
-
* Finer grained access. As for each user and each disk there will be a seperate
|
35
|
-
password by design. You can also grant access to certain disks also only
|
36
|
-
selectively. So for example new admins in your group can only open the disks
|
37
|
-
for your most important services or for which they are respnsible, while access
|
38
|
-
to the other disks is restriced to other admins.
|
7
|
+
It is tailored for fine-grained access control to LUKS encrypted harddisks by
|
8
|
+
many users. Additionally it supports automation through scripts and facilitates
|
9
|
+
key distribution.
|
10
|
+
|
11
|
+
As an example it can be used in an organisation to grant access to encrypted
|
12
|
+
partitions to a team of admins.
|
13
|
+
|
14
|
+
h2. Addressed Problems
|
15
|
+
|
16
|
+
In a traditional setup with multiple LUKS devices most organisations resort
|
17
|
+
to password sharing. This has multiple drawbacks, which arver tries to address:
|
18
|
+
|
19
|
+
* In case of an emergency or scheduled password change, everyone needs to learn
|
20
|
+
a bunch of new passwords and changing them is cumbersome and time consuming.
|
21
|
+
* If the password is leaked, all disks are compromised.
|
22
|
+
* As the amount of passwords grows with the number of disks, password patterns
|
23
|
+
are common. This has the drawback that you can't grant per-disk access to others.
|
24
|
+
|
25
|
+
Further arver can ease many associated tasks:
|
26
|
+
|
27
|
+
* Arver is scriptable - all actions support script hooks, which means that you can
|
28
|
+
recover much faster from outages.
|
29
|
+
* Revoking all access for an admin can be done with only one command.
|
30
|
+
* Since arver keys are encrypted using publickey cryptography it is very easy to
|
31
|
+
safely distribute arver keys.
|
39
32
|
|
40
33
|
h1. Usage
|
41
34
|
|
42
35
|
arver ships with a detailed man page, describing the usage in detail.
|
43
36
|
|
37
|
+
h1. Installation
|
38
|
+
|
39
|
+
The easiest way to install arver is by gem
|
40
|
+
|
41
|
+
sudo gem install arver
|
42
|
+
|
43
|
+
This will install all required dependecies automatically. If your distributions
|
44
|
+
contains an arver package we recommend installation by your package manager.
|
45
|
+
|
46
|
+
The following ruby gems are required for arver:
|
47
|
+
|
48
|
+
* gpgme 2
|
49
|
+
* activesupport 2
|
50
|
+
* escape
|
51
|
+
|
52
|
+
For development you will need the following additional gems:
|
53
|
+
|
54
|
+
* rake
|
55
|
+
* cucumber
|
56
|
+
* rspec
|
57
|
+
|
58
|
+
h1. Requirements
|
59
|
+
|
60
|
+
arver only works with cryptsetup-luks >= 1.0.5 as previous versions do not
|
61
|
+
support key slots properly for our usage.
|
62
|
+
|
44
63
|
h1. Limitations
|
45
64
|
|
65
|
+
* arver only supports LUKS as backend.
|
46
66
|
* arver supports only up to 8 users as LUKS has only 8 key slots (LUKS NUMKEYS).
|
47
67
|
|
48
|
-
|
68
|
+
h2. Known Issues
|
49
69
|
|
50
|
-
|
70
|
+
h3. GPGME and gpg-agent
|
51
71
|
|
52
72
|
If arver asks you multiple times for the password, you might consider to use
|
53
73
|
gpg-agent, so you can decrypt your keypair once and the use it for all your
|
@@ -68,31 +88,6 @@ script. An option is to add the following entry to your .bashrc
|
|
68
88
|
export GPG_AGENT_INFO
|
69
89
|
fi
|
70
90
|
|
71
|
-
h1. Requirements
|
72
|
-
|
73
|
-
arver only works with cryptsetup-luks >= 1.0.5 as previous versions do not
|
74
|
-
support key slots properly for our usage.
|
75
|
-
|
76
|
-
h1. Installation
|
77
|
-
|
78
|
-
The easiest way to install arver is by gem
|
79
|
-
|
80
|
-
sudo gem install arver
|
81
|
-
|
82
|
-
This will install all required dependecies automatically. If your distributions
|
83
|
-
contains an arver package we recommend installation by your package manager.
|
84
|
-
|
85
|
-
The following ruby gems are required for arver:
|
86
|
-
|
87
|
-
* gpgme 2
|
88
|
-
* activesupport 2
|
89
|
-
* escape
|
90
|
-
|
91
|
-
For development you will need the following additional gems:
|
92
|
-
|
93
|
-
* rake
|
94
|
-
* cucumber
|
95
|
-
* rspec
|
96
91
|
|
97
92
|
h1. License
|
98
93
|
|
data/lib/arver/cli.rb
CHANGED
@@ -27,16 +27,13 @@ module Arver
|
|
27
27
|
Options:
|
28
28
|
BANNER
|
29
29
|
opts.on("-c", "--config-dir PATH", String,
|
30
|
-
"Path to
|
31
|
-
"Default: .arver") { |arg| options[:config_dir] = arg }
|
30
|
+
"Path to arverdata dir.") { |arg| options[:config_dir] = arg }
|
32
31
|
opts.on("-u", "--user NAME", String,
|
33
|
-
"
|
32
|
+
"Your username." ) { |arg| options[:user] = arg }
|
34
33
|
opts.on("-h", "--help",
|
35
34
|
"Show this help message.") { Arver::Log.write opts; return }
|
36
|
-
opts.on("--dry-run",
|
37
|
-
"Test your command.") { options[:dry_run] = true }
|
38
35
|
opts.on("--ask-password",
|
39
|
-
"Ask for
|
36
|
+
"Ask for an existing LUKS password when adding a new user.") { options[:ask_password] = true }
|
40
37
|
opts.on("-t", "--trust-all",
|
41
38
|
"Use untrusted GPG Keys.") { options[:trust_all] = true }
|
42
39
|
opts.on("--force",
|
@@ -47,33 +44,35 @@ module Arver
|
|
47
44
|
"Verbose") { Arver::Log.level( Arver::LogLevels::Debug ) }
|
48
45
|
opts.on("--vv",
|
49
46
|
"Max Verbose") { Arver::Log.level( Arver::LogLevels::Trace ) }
|
50
|
-
opts.on(
|
51
|
-
"
|
52
|
-
opts.on( "-g", "--garbage-collect",
|
53
|
-
"Expunge old keys." ) { options[:action] = :gc; }
|
54
|
-
opts.on( "-k TARGET", "--keys TARGET", String,
|
55
|
-
"List local keys for this target.") { |arg| options[:argument][:target] = arg; options[:action] = :key_info; }
|
47
|
+
opts.on("--dry-run",
|
48
|
+
"Test your command.") { options[:dry_run] = true }
|
56
49
|
opts.on("--test-mode",
|
57
50
|
"Test mode (internal use)") { options[:test_mode] = true }
|
58
51
|
opts.separator "Targets:"
|
59
52
|
opts.on(
|
60
|
-
" Possible
|
61
|
-
" 'Group
|
62
|
-
" Multiple
|
63
|
-
" Ambigues
|
53
|
+
" Possible targets are: '<Group>', '<Host>', '<Disk>', '<Host>/<Device>',\n"+
|
54
|
+
" '<Group>/<Host>/<Disk>' or 'ALL'.\n"+
|
55
|
+
" Multiple parameters can be given as comma separated list.\n"+
|
56
|
+
" Ambigues targets yield an error." )
|
64
57
|
opts.separator "Actions:"
|
65
|
-
opts.on_tail( "--create TARGET", String,
|
66
|
-
"Create new arver partition on Target." ) { |arg| options[:argument][:target] = arg; options[:action] = :create; }
|
67
58
|
opts.on_tail( "-o TARGET", "--open TARGET", String,
|
68
59
|
"Open target." ) { |arg| options[:argument][:target] = arg; options[:action] = :open; }
|
69
60
|
opts.on_tail( "-c TARGET", "--close TARGET", String,
|
70
61
|
"Close target." ) { |arg| options[:argument][:target] = arg; options[:action] = :close; }
|
62
|
+
opts.on_tail( "--create TARGET", String,
|
63
|
+
"Create new arver partition on the target." ) { |arg| options[:argument][:target] = arg; options[:action] = :create; }
|
71
64
|
opts.on_tail( "-a USER TARGET", "--add-user USER TARGET", String,
|
72
65
|
"Add a user to target.") { |user| options[:action] = :adduser; options[:argument][:user] = user; }
|
73
66
|
opts.on_tail( "-d USER TARGET", "--del-user USER TARGET", String,
|
74
67
|
"Remove a user from target.") { |user| options[:action] = :deluser; options[:argument][:user] = user; }
|
68
|
+
opts.on_tail( "-g", "--garbage-collect",
|
69
|
+
"Expunge old keys." ) { options[:action] = :gc; }
|
70
|
+
opts.on_tail( "-k TARGET", "--keys TARGET", String,
|
71
|
+
"List local keys for this target.") { |arg| options[:argument][:target] = arg; options[:action] = :key_info; }
|
75
72
|
opts.on_tail( "-i TARGET", "--info TARGET", String,
|
76
73
|
"LUKS info about a target.") { |arg| options[:argument][:target] = arg; options[:action] = :info; }
|
74
|
+
opts.on_tail( "-l", "--list-targets",
|
75
|
+
"List targets." ) { options[:action] = :list; }
|
77
76
|
|
78
77
|
begin
|
79
78
|
opts.parse!(arguments)
|
data/lib/arver/version.rb
CHANGED
data/man/arver.5
CHANGED
@@ -10,8 +10,7 @@
|
|
10
10
|
.
|
11
11
|
.nf
|
12
12
|
|
13
|
-
arver [\-u user] [\-c arverdata] [OPTIONS]
|
14
|
-
arver [\-u user] [\-c arverdata] [OPTIONS] ACTION
|
13
|
+
arver [\-u user] [\-c arverdata] [OPTIONS] ACTION [USER] [TARGET]
|
15
14
|
.
|
16
15
|
.fi
|
17
16
|
.
|
@@ -26,12 +25,15 @@ There are some generic command line options:
|
|
26
25
|
.
|
27
26
|
.TP
|
28
27
|
\fB\-u USER\fR, \fB\-\-user USER\fR
|
29
|
-
By default \fBarver\fR will read \fB~/\.arver\fR to get your username\. Using \fB\-u USER\fR you can override
|
28
|
+
By default \fBarver\fR will read \fB~/\.arver\fR to get your username\. Using \fB\-u USER\fR you can override it\.
|
30
29
|
.
|
31
30
|
.TP
|
32
31
|
\fB\-c PATH\fR, \fB\-\-config\-dir PATH\fR
|
33
32
|
By default \fBarver\fR will assume your data storage in \fB~/\.arverdata\fR\. However, if you have multiple data storage or you want to put it to a different location you can use the \fB\-c PATH\fR option\.
|
34
33
|
.
|
34
|
+
.P
|
35
|
+
For more options see \fBarver \-h\fR
|
36
|
+
.
|
35
37
|
.SH "ACTIONS"
|
36
38
|
The following actions are supported:
|
37
39
|
.
|
@@ -91,7 +93,7 @@ But the TARGET option accepts also partial names and lists\. E\.g
|
|
91
93
|
.
|
92
94
|
.nf
|
93
95
|
|
94
|
-
|
96
|
+
location1,location2/host2,host4,disk3
|
95
97
|
.
|
96
98
|
.fi
|
97
99
|
.
|
@@ -423,6 +425,9 @@ If you use a version controll system to store your \fBarverdata\fR you should do
|
|
423
425
|
\fBcryptsetup\fR(8)\. \fBgnupg\fR(7)\.
|
424
426
|
.
|
425
427
|
.P
|
428
|
+
Arver description: \fIhttps://tech\.immerda\.ch/2011/08/arver\-distributed\-luks\-key\-management/\fR
|
429
|
+
.
|
430
|
+
.P
|
426
431
|
Arver project site: \fIhttps://git\.codecoop\.org/projects/arver/\fR
|
427
432
|
.
|
428
433
|
.P
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -15,7 +15,7 @@ date: 2012-04-30 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: gpgme
|
18
|
-
requirement: &
|
18
|
+
requirement: &12106580 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ! '>='
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: 2.0.0
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *12106580
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: escape
|
29
|
-
requirement: &
|
29
|
+
requirement: &12105920 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ! '>='
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 0.0.2
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *12105920
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: activesupport
|
40
|
-
requirement: &
|
40
|
+
requirement: &12105360 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - <
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: 3.0.0
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *12105360
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: cucumber
|
51
|
-
requirement: &
|
51
|
+
requirement: &12104740 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ! '>='
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: 0.10.2
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *12104740
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: rspec
|
62
|
-
requirement: &
|
62
|
+
requirement: &12104120 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ! '>='
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: 2.5.0
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *12104120
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rake
|
73
|
-
requirement: &
|
73
|
+
requirement: &12103560 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
version: 0.9.2
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *12103560
|
82
82
|
description: Arver helps you to manage a large amount of crypted devices easily and
|
83
83
|
safe amongst a certain amount of members
|
84
84
|
email: arver@lists.immerda.ch
|