[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postgresql-admin
Subject:    Re: [ADMIN] Separate DDL and SQL users
From:       Rob Emery <re-pgsql () codeweavers ! net>
Date:       2016-03-12 17:47:45
Message-ID: CAPCETpvmBLfaUxWiAi6w1HRtijO=+6DtmbuE-yyY_7O=yuHrrg () mail ! gmail ! com
[Download RAW message or body]

Hi Keith,

Ah! That makes a lot more sense, thanks for the clarification; we've done
exactly the same now, we use one user for all schema changes who owns the
db and has its default permissions set to grant as appropriate over the
tables for the live applications.

Thanks for the help!

Rob

On 11 March 2016 at 15:05, Keith <keith@keithf4.com> wrote:

> No, it's working as expected. ALTER DEFAULT PRIVILEGES doesn't change the
> default privileges for every object created by anyone in a given schema. It
> changes the default privileges for objects created by a given role. If you
> don't give a role, then the default privileges are changed for the role
> that's currently logged in.
> 
> We've managed this by having all DDL (object creation and maintenance)
> done by a specific role. We usually make that role the owner of everything
> as well.
> 
> Keith
> 
> On Fri, Mar 11, 2016 at 9:27 AM, Rob Emery <re-pgsql@codeweavers.net>
> wrote:
> 
> > Hi Thomas
> > 
> > That sounds actually ideal; I can create the schema as a superuser and
> > switch the owner to re_migration.
> > 
> > From your suggestion, I've actually just tried that, and I was finding
> > that doing:
> > 
> > ALTER DEFAULT PRIVILEGES
> > IN SCHEMA new_schema
> > GRANT SELECT ON TABLES TO live_application;
> > 
> > didn't seem to work, a table when created wasn't readable by
> > live_application.
> > 
> > Although when I switched it to :
> > 
> > ALTER DEFAULT PRIVILEGES
> > FOR ROLE re_migration
> > IN SCHEMA new_schema
> > GRANT SELECT ON TABLES TO live_application;
> > 
> > it seemed to work!? This feels really odd to me, I'd expect the first one
> > to apply to everyone. Unless I'm totally misinterpreting that behaviour?
> > 
> > Thanks,
> > Rob
> > 
> > On 11 March 2016 at 13:08, Thomas Kellerer <spam_eater@gmx.net> wrote:
> > 
> > > Rob Emery schrieb am 11.03.2016 um 12:18:
> > > > So we're looking at automating our migrations against PG for the
> > > > developers so that it's simple enough for them and no maintenance for
> > > > me. I'm struggling to find a role/permissions structure that works;
> > > > we've come from SQL Server so we're used to having DBRoles.
> > > > 
> > > > So I want the re_migration role to be able to create tables,
> > > > sequences etc and grant to other users etc; yet I want the
> > > > live_application role to be able to select,insert,update,delete.
> > > > 
> > > > It seems that the only real solution here is to have the db owned by
> > > > re_migration, then in every migration GRANT
> > > > SELECT,INSERT,UPDATE,DELETE to the live_application role?
> > > 
> > > You can set default privileges for a schema:
> > > http://www.postgresql.org/docs/current/static/sql-alterdefaultprivileges.html
> > > 
> > > If you do that, every object that is created in the schema is
> > > automatically assigned those default privileges.
> > > 
> > > So you only need to do do once, after you create a new schema, e.g.
> > > 
> > > as re_migration do:
> > > 
> > > create schema dbo;
> > > grant usage on dbo to life_application;
> > > alter default privileges in schema dbo grant
> > > select,insert,update,delete on tables to live_application;
> > > alter default privileges in schema dbo grant usage,select,update on
> > > sequences to live_application;
> > > 
> > > Of course the re_migration role needs to have the privileges to create a
> > > schema.
> > > 
> > > Thomas
> > > 
> > > 
> > > 
> > > 
> > > --
> > > Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> > > To make changes to your subscription:
> > > http://www.postgresql.org/mailpref/pgsql-admin
> > > 
> > > --
> > > <http://www.postgresql.org/mailpref/pgsql-admin>
> > > Robert Emery
> > > Infrastructure Director
> > > 
> > > E: <http://www.postgresql.org/mailpref/pgsql-admin>
> > > robertemery@codeweavers.net | T: 01785 711633 | W: www.codeweavers.net
> > > 
> > 
> > <https://www.codeweavers.net>
> > 
> > 
> > <http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW6 \
> > 4Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive1.com%2F%3Fu%3 \
> > Ddb934935d4174e46e9063c8c4%26id%3De34a33f79a&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>
> >  Codeweavers
> > ​
> > March
> > Newsletter
> > <http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW6 \
> > 4Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3 \
> > Ddb934935d4174e46e9063c8c4%26id%3D8939a8a212&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>
> >  
> > <http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW6 \
> > 4Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3 \
> > Ddb934935d4174e46e9063c8c4%26id%3D8939a8a212&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0> \
> > l 
> > *Codeweavers' Digital Marketing Conference
> > <http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW6 \
> > 4Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcodeweavers-dig \
> > ital-marketing-conference&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>*
> >  
> > The launch of the stats that will help you sell more cars
> > <http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW6 \
> > 4Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcompany-blog%2F \
> > the-launch-of-the-stats-that-will-help-you-sell-more-cars&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>
> >  
> > *Phone:* 0800 021 0888  * Email: *contactus@codeweavers.net
> > *Codeweavers Ltd* | Barn 4 | Dunston Business Village | Dunston | ST18
> > 9AB
> > Registered in England and Wales No. 04092394 | VAT registration no. 974
> > 9705 63
> > 
> > <https://www.linkedin.com/company/codeweavers-limited>
> > <https://vimeo.com/codeweaversltd>
> > <https://plus.google.com/b/105942302039373248738/+CodeweaversNet/posts>
> > <https://twitter.com/CodeweaversTeam?lang=en-gb>
> > 
> 
> 


-- 
Robert Emery
Infrastructure Director

E: robertemery@codeweavers.net | T: 01785 711633 | W: www.codeweavers.net

-- 
 <https://www.codeweavers.net>

<http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW64Js9 \
84WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive1.com%2F%3Fu%3Ddb93493 \
5d4174e46e9063c8c4%26id%3De34a33f79a&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>
 Codeweavers 
​
March
 Newsletter 
<http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW64Js9 \
84WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3Ddb93493 \
5d4174e46e9063c8c4%26id%3D8939a8a212&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>
 <http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW64Js \
984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3Ddb9349 \
35d4174e46e9063c8c4%26id%3D8939a8a212&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0> \
l  

*Codeweavers' Digital Marketing Conference 
<http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW64Js9 \
84WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcodeweavers-digital-marketing-conference&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>*


The launch of the stats that will help you sell more cars 
<http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW64Js9 \
84WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcompany-blog%2Fthe-laun \
ch-of-the-stats-that-will-help-you-sell-more-cars&si=4882959321006080&pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0>


*Phone:* 0800 021 0888  * Email: *contactus@codeweavers.net
*Codeweavers Ltd* | Barn 4 | Dunston Business Village | Dunston | ST18 9AB
Registered in England and Wales No. 04092394 | VAT registration no. 974 
9705 63 

<https://www.linkedin.com/company/codeweavers-limited>   
<https://vimeo.com/codeweaversltd>   
<https://plus.google.com/b/105942302039373248738/+CodeweaversNet/posts>   
<https://twitter.com/CodeweaversTeam?lang=en-gb>


[Attachment #3 (text/html)]

<div dir="ltr"><div><div><div>Hi Keith,<br><br></div>Ah! That makes a lot more sense, \
thanks for the clarification; we&#39;ve done exactly the same now, we use one user \
for all schema changes who owns the db and has its default permissions set to grant \
as appropriate over the tables for the live applications.<br><br></div>Thanks for the \
help!<br><br></div>Rob<br></div><div class="gmail_extra"><br><div \
class="gmail_quote">On 11 March 2016 at 15:05, Keith <span dir="ltr">&lt;<a \
href="mailto:keith@keithf4.com" target="_blank">keith@keithf4.com</a>&gt;</span> \
wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px \
#ccc solid;padding-left:1ex"><div dir="ltr">No, it&#39;s working as expected. ALTER \
DEFAULT PRIVILEGES doesn&#39;t change the default privileges for every object created \
by anyone in a given schema. It changes the default privileges for objects created by \
a given role. If you don&#39;t give a role, then the default privileges are changed \
for the role that&#39;s currently logged in.<div><br></div><div>We&#39;ve managed \
this by having all DDL (object creation and maintenance) done by a specific role. We \
usually make that role the owner of everything as \
well.</div><div><br></div><div>Keith</div></div><div class="gmail_extra"><br><div \
class="gmail_quote">On Fri, Mar 11, 2016 at 9:27 AM, Rob Emery <span dir="ltr">&lt;<a \
href="mailto:re-pgsql@codeweavers.net" \
target="_blank">re-pgsql@codeweavers.net</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div>Hi \
Thomas<br><br></div>That sounds actually ideal; I can create the schema as a \
superuser and switch the owner to re_migration.<br><br></div>From your suggestion, \
I&#39;ve actually just tried that, and I was finding that doing:<br></div><br>ALTER \
DEFAULT PRIVILEGES <br>IN SCHEMA new_schema<br>GRANT SELECT ON TABLES TO \
live_application; <br></div><br>didn&#39;t seem to work, a table when created \
wasn&#39;t readable by live_application.<br><br></div>Although when I switched it to \
:<br><br>ALTER DEFAULT PRIVILEGES <br>FOR ROLE re_migration <br>IN SCHEMA new_schema \
<br>GRANT SELECT ON TABLES TO live_application;<br><br></div>it seemed to work!? This \
feels really odd to me, I&#39;d expect the first one to apply to everyone. Unless \
I&#39;m totally misinterpreting that \
behaviour?<br><br></div>Thanks,<br></div>Rob<br><div class="gmail_extra"><br><div \
class="gmail_quote"><div><div>On 11 March 2016 at 13:08, Thomas Kellerer <span \
dir="ltr">&lt;<a href="mailto:spam_eater@gmx.net" \
target="_blank">spam_eater@gmx.net</a>&gt;</span> wrote:<br></div></div><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div><div>Rob Emery schrieb am 11.03.2016 um 12:18:<br> &gt; \
So we&#39;re looking at automating our migrations against PG for the<br> &gt; \
developers so that it&#39;s simple enough for them and no maintenance for<br> &gt; \
me. I&#39;m struggling to find a role/permissions structure that works;<br> &gt; \
we&#39;ve come from SQL Server so we&#39;re used to having DBRoles.<br> &gt;<br>
&gt; So I want the re_migration role to be able to create tables,<br>
&gt; sequences etc and grant to other users etc; yet I want the<br>
&gt; live_application role to be able to select,insert,update,delete.<br>
&gt;<br>
&gt; It seems that the only real solution here is to have the db owned by<br>
&gt; re_migration, then in every migration GRANT<br>
&gt; SELECT,INSERT,UPDATE,DELETE to the live_application role?<br>
<br>
You can set default privileges for a schema: <a \
href="http://www.postgresql.org/docs/current/static/sql-alterdefaultprivileges.html" \
rel="noreferrer" target="_blank">http://www.postgresql.org/docs/current/static/sql-alterdefaultprivileges.html</a><br>
 <br>
If you do that, every object that is created in the schema is automatically assigned \
those default privileges.<br> <br>
So you only need to do do once, after you create a new schema, e.g.<br>
<br>
as re_migration do:<br>
<br>
   create schema dbo;<br>
   grant usage on dbo to life_application;<br>
   alter default privileges in schema dbo grant select,insert,update,delete on tables \
to live_application;<br>  alter default privileges in schema dbo grant \
usage,select,update on sequences to live_application;<br> <br>
Of course the re_migration role needs to have the privileges to create a schema.<br>
</div></div><span><font color="#888888"><div><div><br>
Thomas<br>
<br>
<br>
<br>
<br>
--<br>
Sent via pgsql-admin mailing list (<a href="mailto:pgsql-admin@postgresql.org" \
target="_blank">pgsql-admin@postgresql.org</a>)<br> To make changes to your \
subscription:<br> </div></div><a \
href="http://www.postgresql.org/mailpref/pgsql-admin" rel="noreferrer" \
target="_blank">http://www.postgresql.org/mailpref/pgsql-admin<span><font \
color="#888888"><br clear="all"><br>-- <br></font></span></a><span><div><a \
href="http://www.postgresql.org/mailpref/pgsql-admin" rel="noreferrer" \
target="_blank">Robert Emery<br>Infrastructure Director<br><br>E: </a><a \
href="mailto:robertemery@codeweavers.net" \
target="_blank">robertemery@codeweavers.net</a> | T: 01785 711633 | W: <a \
href="http://www.codeweavers.net" target="_blank">www.codeweavers.net</a></div> \
</span></font></span></blockquote></div><font color="#888888"> </font></div></div>

<br><div><div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;background-color:rgb(255,255,255)"><div \
style="font-size:12.8px"><div style="font-size:12.8px"><div \
style="font-size:12.8px"><div style="font-size:12.8px"><div \
style="font-family:arial,sans-serif;font-size:12.8px"><div \
style="font-family:tahoma,sans-serif"><a href="https://www.codeweavers.net" \
style="font-size:12.8px;font-family:arial,sans-serif;white-space:initial;color:rgb(34,34,34)" \
target="_blank"><img \
src="https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/bc5d5152-eb09-4d67-a179-e7f796c73cc6.png" \
style="margin-right:0px"></a></div><div style="font-size:12.8px"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive1.com%2F%3Fu%3Ddb \
934935d4174e46e9063c8c4%26id%3De34a33f79a&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#000000"><br></font></a></div><div \
style="font-size:12.8px"><font style="font-size:12.8px"><span \
style="font-size:12.8px"><font><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3Ddb \
934935d4174e46e9063c8c4%26id%3D8939a8a212&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#444444">Codeweavers  <div \
style="font-family:tahoma,sans-serif;display:inline">​<div \
style="font-family:tahoma,sans-serif;display:inline">March</div></div>  \
Newsletter</font></a><div style="font-family:tahoma,sans-serif;display:inline"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3Ddb \
934935d4174e46e9063c8c4%26id%3D8939a8a212&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#444444"> </font></a><font color="#000000">  l   \
</font></div></font></span></font><u style="font-size:12.8px;white-space:initial"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcodeweavers-digita \
l-marketing-conference&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#444444">Codeweavers&#39; Digital Marketing \
Conference</font></a></u></div><div style="font-size:12.8px"><u \
style="font-size:12.8px;white-space:initial"><br></u></div><span \
style="font-size:12.8px;white-space:initial"><font color="#444444"><div \
style="font-family:tahoma,sans-serif;display:inline"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcompany-blog%2Fthe \
-launch-of-the-stats-that-will-help-you-sell-more-cars&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"> <font color="#444444">The launch of the stats that will help you \
sell more cars</font></a></div></font></span></div><div><font size="1"><span \
style="color:rgb(68,68,68);font-family:arial,helvetica,sans-serif"><b><br></b></span></font></div><div><font \
face="tahoma, sans-serif" color="#666666"><font size="1"><b>Phone:</b>  <a \
value="+448000210888" style="color:rgb(34,34,34)"><font color="#666666">0800 021 \
0888</font></a>    <strong>  Email:  </strong><a \
href="mailto:contactus@codeweavers.net" target="_blank"><font \
color="#666666">contactus@codeweavers.net</font></a></font><span \
style="font-size:12.8px"><br><strong style="font-size:x-small">Codeweavers \
Ltd</strong><span style="font-size:x-small">  | Barn 4 | Dunston Business Village | \
Dunston | ST18 9AB</span><br style="font-size:16.64px"><span \
style="font-size:x-small">Registered in England and Wales No. 04092394 | VAT \
registration no. 974 9705 63  </span></span></font></div><div \
style="font-size:12.8px"><font color="#444444"><font face="arial, helvetica, \
sans-serif"><span style="font-size:x-small"><br></span></font></font></div><div \
style="font-size:12.8px"><a \
href="https://www.linkedin.com/company/codeweavers-limited" target="_blank"><img \
src="https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/66b70551-c48b-4355-9c7e-8fe4f9eacc01.png" \
style="font-size:12.8px" height="25" width="25"></a><span style="font-size:12.8px">   \
</span><font color="#1155cc"><span \
style="font-size:12px;text-align:-webkit-center;word-wrap:break-word"><a \
href="https://vimeo.com/codeweaversltd" target="_blank"><img \
src="https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/0038b65d-06f5-46d4-a006-820206c14953.png" \
height="25" width="25"></a></span></font><span style="font-size:12.8px">    </span><a \
href="https://plus.google.com/b/105942302039373248738/+CodeweaversNet/posts" \
target="_blank"><img \
src="https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/d3c512f1-5bf2-43f2-9bfb-a8882d2f11e4.png" \
style="font-size:12.8px" height="25" width="25"></a><span style="font-size:12.8px">   \
</span><a href="https://twitter.com/CodeweaversTeam?lang=en-gb" target="_blank"><img \
src="https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/542a4850-93e0-4742-bd30-1b6601d16c5f.png" \
style="font-size:12.8px" height="25" \
width="25"></a></div></div></div></div></div></div></div></div></blockquote></div><br></div>
 </blockquote></div><br><br clear="all"><br>-- <br><div \
class="gmail_signature">Robert Emery<br>Infrastructure Director<br><br>E: <a \
href="mailto:robertemery@codeweavers.net" \
target="_blank">robertemery@codeweavers.net</a> | T: 01785 711633 | W: <a \
href="http://www.codeweavers.net" target="_blank">www.codeweavers.net</a></div> \
</div>

<br>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8000001907349px;background-color:rgb(255,255,255)"><div \
style="font-size:12.8px"><div style="font-size:12.8px"><div \
style="font-size:12.8px"><div style="font-size:12.8px"><div \
style="font-family:arial,sans-serif;font-size:12.8px"><div \
style="font-family:tahoma,sans-serif"><a href="https://www.codeweavers.net" \
style="font-size:12.8px;font-family:arial,sans-serif;white-space:initial;color:rgb(34,34,34)" \
target="_blank"><img \
src="https://ci6.googleusercontent.com/proxy/M_MXwPWn0BaCPMd7ygKoen2JUbmS-W9CSXm4KkJry \
Bc5HLNBstF3KDMJs2ijWdxCiZUpQUHxcpZzbYd99SEz84tNvokQBRQiE5RiVeWqkFcfKkeK0mkQ_ivWAwnZvOm \
_YkxdOYu2aH8uVvQ1e5aGsf1d_cVNniBWDTjZr4c=s0-d-e1-ft#https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/bc5d5152-eb09-4d67-a179-e7f796c73cc6.png" \
style="margin-right:0px"></a></div><div style="font-size:12.8px"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive1.com%2F%3Fu%3Ddb \
934935d4174e46e9063c8c4%26id%3De34a33f79a&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#000000"><br></font></a></div><div \
style="font-size:12.8px"><font style="font-size:12.8px"><span \
style="font-size:12.8px"><font><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3Ddb \
934935d4174e46e9063c8c4%26id%3D8939a8a212&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#444444">Codeweavers  <div \
style="font-family:tahoma,sans-serif;display:inline">​<div \
style="font-family:tahoma,sans-serif;display:inline">March</div></div>  \
Newsletter</font></a><div style="font-family:tahoma,sans-serif;display:inline"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=http%3A%2F%2Fus6.campaign-archive2.com%2F%3Fu%3Ddb \
934935d4174e46e9063c8c4%26id%3D8939a8a212&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#444444"> </font></a><font color="#000000">  l   \
</font></div></font></span></font><u style="font-size:12.8px;white-space:initial"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcodeweavers-digita \
l-marketing-conference&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"><font color="#444444">Codeweavers&#39; Digital Marketing \
Conference</font></a></u></div><div style="font-size:12.8px"><u \
style="font-size:12.8px;white-space:initial"><br></u></div><span \
style="font-size:12.8px;white-space:initial"><font color="#444444"><div \
style="font-family:tahoma,sans-serif;display:inline"><a \
href="http://t.sidekickopen42.com/e1t/c/5/f18dQhb0S7lC8dDMPbW2n0x6l2B9nMJN7t5XX4QBhKzW \
64Js984WrKTYVd0r_-56dzZCf1d8gHj02?t=https%3A%2F%2Fcodeweavers.net%2Fcompany-blog%2Fthe \
-launch-of-the-stats-that-will-help-you-sell-more-cars&amp;si=4882959321006080&amp;pi=04b7a1ae-3680-4ca6-d2bb-74bc3d2d6fc0" \
target="_blank"> <font color="#444444">The launch of the stats that will help you \
sell more cars</font></a></div></font></span></div><div><font size="1"><span \
style="color:rgb(68,68,68);font-family:arial,helvetica,sans-serif"><b><br></b></span></font></div><div><font \
color="#666666" face="tahoma, sans-serif"><font size="1"><b>Phone:</b>  <a \
value="+448000210888" style="color:rgb(34,34,34)"><font color="#666666">0800 021 \
0888</font></a>    <strong>  Email:  </strong><a \
href="mailto:contactus@codeweavers.net" target="_blank"><font \
color="#666666">contactus@<wbr>codeweavers.net</font></a></font><span \
style="font-size:12.8px"><br><strong style="font-size:x-small">Codeweavers \
Ltd</strong><span style="font-size:x-small">  | Barn 4 | Dunston Business Village | \
Dunston | ST18 9AB</span><br style="font-size:16.64px"><span \
style="font-size:x-small">Registered in England and Wales No. 04092394 | VAT \
registration no. 974 9705 63  </span></span></font></div><div \
style="font-size:12.8px"><font color="#444444"><font face="arial, helvetica, \
sans-serif"><span style="font-size:x-small"><br></span></font></font></div><div \
style="font-size:12.8px"><a \
href="https://www.linkedin.com/company/codeweavers-limited" target="_blank"><img \
src="https://ci6.googleusercontent.com/proxy/uumb6rD_Bg7DSeTZtS_yckRw38EfrTs6q0FTDEXmy \
YCAi9J2E1ZqzPuG-3FnuMin9xwn4aEUFyF13q03H5znaRGvtNRzI9Nk26HIxi6m91QmKbN9ric3T8ypt3r6JBN \
CaYMsTyvnBhyj1iGaRkN8qHxocZxMQ8EGlE01Ogo=s0-d-e1-ft#https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/66b70551-c48b-4355-9c7e-8fe4f9eacc01.png" \
style="font-size:12.8px" height="25" width="25"></a><span style="font-size:12.8px">   \
</span><font color="#1155cc"><span \
style="font-size:12px;text-align:-webkit-center;word-wrap:break-word"><a \
href="https://vimeo.com/codeweaversltd" target="_blank"><img \
src="https://ci4.googleusercontent.com/proxy/96HkjC6Hx22mbu4_CkppX-IXkh0lDLVFBwbebNyMf \
jasBznrXLIfl_ERUKweZI0NtORKMvxWWXt2-0BPXIauAYAtUzWf9YotIn0iEZjAicKjl02j3-OUN1uv7tN6j7d \
lsjEiSRxCEC7KDStPztm6YTyBqCT2ETDxTukIugw=s0-d-e1-ft#https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/0038b65d-06f5-46d4-a006-820206c14953.png" \
height="25" width="25"></a></span></font><span style="font-size:12.8px">    </span><a \
href="https://plus.google.com/b/105942302039373248738/+CodeweaversNet/posts" \
target="_blank"><img \
src="https://ci3.googleusercontent.com/proxy/YvEegTqFaA2btJzUzbCYn3BDEqlPZobsjnpxXGOMD \
EU1hXSyLjY-rdCbM4YidFP7rkRMHlvUGvX1GAjBa2KbhJZkhswuc6bhDRWQRJnozm1nJ6J6FInVFK8PUtontmL \
FIt8dOT2WCykCVuCMICEvPLWycG49cdwA2t52VVo=s0-d-e1-ft#https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/d3c512f1-5bf2-43f2-9bfb-a8882d2f11e4.png" \
style="font-size:12.8px" height="25" width="25"></a><span style="font-size:12.8px">   \
</span><a href="https://twitter.com/CodeweaversTeam?lang=en-gb" target="_blank"><img \
src="https://ci4.googleusercontent.com/proxy/7FaLwUYcAHNuSp_9VmzRpVH0O16BzuWpktsFrzmn_ \
n740Ux4xufXWlTGGQ25E6wATJwM9Ft0rsTC1qK06XOBVjr2vfgY-_42ZwtQbkpy337imOawFo4DlQxA5GkUJ3y \
tuhDXzp4chi-bCwhlQBM6NdpmuI9UR3hdaxejxks=s0-d-e1-ft#https://gallery.mailchimp.com/db934935d4174e46e9063c8c4/images/542a4850-93e0-4742-bd30-1b6601d16c5f.png" \
style="font-size:12.8px" height="25" \
width="25"></a></div></div></div></div></div></div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic